CakePHP是否可以将动态数据传递给元素以在整个站点中使用?

时间:2012-02-23 11:24:22

标签: cakephp cakephp-2.0

通过我正在进行的这个项目,标题包含的菜单项具有显示所选菜单项的相关项目的下拉菜单。这些项目旨在直接从数据库中提取,因此可以在需要时添加/删除项目。

我的问题是当我使用带CakePHP的Element时,它会如何工作?我理解一个元素是一些可重用的代码,但我不确定应该放置逻辑代码的位置?元素是否使用它自己的控制器,或者我是否必须将代码添加到项目中活跃的每个控制器上?

干杯!

3 个答案:

答案 0 :(得分:4)

您将使用该元素作为要在每个页面上显示的视图片段。你不想打破MVC并在视图中混合业务逻辑。

在元素内部使用requestAction()调用控制器操作。阅读此http://book.cakephp.org/2.0/en/views.html#elements这将解释如何使用requestAction()。

听起来你想要建立菜单或其他东西。因此,请调用处理菜单的控制器并从模型中获取数据。

答案 1 :(得分:2)

元素基本上是可以包含在其他视图中的迷你视图。您可以为元素创建控制器,也可以将逻辑添加到包含该元素的控制器。 http://book.cakephp.org/1.3/view/1081/Elements

答案 2 :(得分:1)

我有一个与页面代表公司的dinamic菜单元素,我在布局中使用它,因为它需要在每个页面中显示。

我所做的是以下内容:在beforeFilter中的app控制器中(你可以在渲染之前使用或在渲染视图之前调用的任何东西)我做逻辑部分。像这样的东西

$this->loadModel('Company');
$companies = $this->Company->find('all');
$this->set('companies', $companies);

你可以在你的views / layout / elements中使用它

希望这可以帮助你:)