我想构建一个可以作为小方框包含在不同视图中的小部件。
窗口小部件是一个表,显示表(模型)“Xyz”中的一些行;某些行(根据用户权限)是可编辑的(用户可以更改其值)。
实现这样一个(简单)事物的最佳方式是什么(我是CakePHP的新手)?
特别是:
我应该在哪个文件中放置演示文稿代码(通常是.ctp)以便将其包含在其他视图中?
我应该在哪个文件中放入检索数据和准备演示代码变量的代码?通常它应该转到Controller,但是我可以从另一个Controller中包含/调用Controller方法。
我应该在哪个文件中放置处理POST请求的代码?
答案 0 :(得分:3)
使用元素存储窗口小部件标记并使用requestAction获取数据:
/app/View/Elements/widget.ctp
$data = $this->requestAction('/controller/action/param1/etc');
debug($data);
如果你这样做(就像把它放在AppController :: beforeFilter()中那样),只有在它显示的小部件时才会获取数据
答案 1 :(得分:0)
简言之
app / Controller / AppController.php
class AppController extends Controller {
function beforeFilter() {
parent::beforeFilter();
$this->set(
'cool_variable',
$this->YourMethodOrComponent->action($params)
);
}
}
正如您的业务逻辑所要求的那样。通常它会是YourFancyController / your_cool_action。如果是ajax请求,请注意重定向或刷新。
编辑:RichardAtHome提出了更好的解决方案,因为我的假设基于非常过时的原则。