我已经建模,现在正在测试一个PHP (CodeIgniter 4) web应用程序的数据库。我在我的(products) Model中创建了一个函数,该函数从DB中检索数据,并在控制器中调用该函数。
getBasicInfo(int $id): array
{
$db = $this->connectToDB();
$query = $db->query('SELECT productName, productDescription, productType FROM konnektrix_db.products WHERE productID = $id LIMIT 1');
$row = $query->getRow();
return
[ $row->productName,
$row->productDescription,
$row->productType
];
}
}
class Home extends BaseController
{
public function index()
{
$ProductModel = new Products();
$data = $ProductModel->getBasicInfo(1);
//$data['name'] = 'Yuna';
return view('testing_view',$data);
}
}
我想要的是能够从我的视图(testing_view)访问该数据($data),但当我这样做时,它不识别变量。
<!DOCTYPE html>
<html lang="en">
<head>
<title>Data testing view</title>
</head>
<body>
<h2>General product overview page</h2>
<h1><? $data; ?></h1>
</body>
知道我可能做错了什么吗?
我看过关于如何在CI4中将数据从控制器传递到视图的多个来源,这就是他们所做的,除非我错过了什么?
查看错误
根据文档,您应该使用转义函数调用变量。
请尝试:
从getBasicInfo函数中添加字符串标识符到数组。
getBasicInfo(int $id): array
{
$db = $this->connectToDB();
$query = $db->query('SELECT productName, productDescription, productType FROM konnektrix_db.products WHERE productID = $id LIMIT 1');
$row = $query->getRow();
return
[ "name" => $row->productName,
"description" => $row->productDescription,
"type" => $row->productType
];
}
然后在视图中像这样:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Data testing view</title>
</head>
<body>
<h2>General product overview page</h2>
<h1><? esc($name); ?></h1>
<h1><? esc($description); ?></h1>
<h1><? esc($type); ?></h1>
</body>
当你将一个数组传递给视图时,数组会被'爆炸'出来。所以$data['name']
变成了$name
所以只要搜索以数组键作为名称的变量。