私は標準の CakePHP 2.2 をインストールしており、数量にマッピングされた productID の配列を格納する Cookie であるカートをホームページに表示したいと考えています。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() メソッドを誤って設定しようとしたために発生しました。CONTROLLERではなくMODELでこの機能を作ろうとしていたはずです。これが私が欲しかったものだったので、とにかく $this->Product->findById() を使用するように変更しました。