我有以下事件偵聽器,但想從它設置一個viewVar,並有一些問題搞清楚如何。如果我不能或不應該,當我需要$products
可用於視圖時,最好的方法是什麼?CakePHP - 從EventListener中設置viewVar
文件是./Products/Lib/Event/Products.php
。
<?php
App::uses('CakeEventListener', 'Event');
class Products implements CakeEventListener {
public function implementedEvents() {
return array(
'View.beforeRender' => 'get_products',
);
}
public function get_products($event) {
$this->Product = ClassRegistry::init('Products.Product');
$products = $this->Product->find('all', array(
'fields' => array('Product.*', 'Content.title')
));
$this->set('products', $products);
}
}
返回Fatal error: Uncaught Error: Call to undefined method Products::set()
。
尚未在近十年中使用的蛋糕,但是,確實類產品有一個'set'功能?看起來不像它。 – ficuscr
一般而言,您需要將視圖/應用程序傳入或能夠將其從註冊表中取出,以便能夠在其中訪問該視圖/應用程序。這些傢伙喜歡靜態...有一個'App :: get'?搜索和這些是我能找到的最有用的。 http://martinbean.co.uk/blog/2013/11/22/getting-to-grips-with-cakephps-events-system/和http://stackoverflow.com/questions/16923246/where-to-register聽衆 - 祝你好運! – ficuscr
如何將這個邏輯移動到AppController?這可以使'$ products'在任何地方都可用。 – Mary