我有一个标准的 cakePHP 2.2 安装,并希望在主页上显示一个购物车,这是一个 cookie,存储映射到数量的产品 ID 数组。cookie 设置正确,我已经验证过了。
我可以从 cookie 数组中检索 ID,现在需要从数据库中获取产品名称、价格和内容,以便将它们呈现给用户,而不是一串 ID。
我的印象是我应该在我的 AppController.php 文件中执行此操作,并具有以下代码。但这给了我下面的错误。getData() 是我的 ProductController.php 类中的一个方法。我试过使用 $uses 和 $this->loadModel 但似乎都不起作用。
Product->getData() 基本上返回产品的数据库行。我将在我的 default.ctp 文件中格式化它。这样做的正确方法是什么?
class AppController extends Controller {
public $components = array('Cookie', 'Session');
//public $uses = array('Product');
function beforeFilter() {
$this->loadModel('Product');
$cookieCartVar = $this->Cookie->read('Cart');
$this->set('cookieCart', $cookieCartVar);
$p = array();
if (count($cookieCartVar) > 0) {
foreach ($cookieCartVar as $prodId => $qty) {
$p[] = $this->Product->getData($prodId);
}
}
$this->set('cookieProducts', $p);
}
}
Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'getData' at line 1
SQL Query: getData
编辑
这是因为我错误地尝试在 ProductsController.php 中设置 getData() 方法。我应该一直在尝试在模型中创建此功能,而不是在控制器中。我将其更改为使用 $this->Product->findById() 反正这是我想要的。