如何成功地将数据从控制器传递到视图?



我已经建模,现在正在测试一个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

所以只要搜索以数组键作为名称的变量。

相关内容

  • 没有找到相关文章

最新更新