requestAction和在cakephp中使用元素之间的区别?

requestAction和在cakephp中使用元素之间的区别?,cakephp,elements,Cakephp,Elements,有人能进一步告诉我在视图中直接调用requestAction和使用元素之间的区别吗?我看得出来有人提到过。 过度使用requestAction是否存在真正的性能问题?我使用的是cake 2.0.6元素,用于视图重复html和php代码时,requestAction用于集成插件而不是大型功能时。但您不能滥用请求操作 示例元素: echo $this->element("footer", array('var'=> 1)); // element footer, raisin in th

有人能进一步告诉我在视图中直接调用requestAction和使用元素之间的区别吗?我看得出来有人提到过。
过度使用requestAction是否存在真正的性能问题?我使用的是cake 2.0.6

元素,用于视图重复html和php代码时,requestAction用于集成插件而不是大型功能时。但您不能滥用请求操作

示例元素:

echo $this->element("footer", array('var'=> 1));
// element footer, raisin in the array var
请求操作示例:

echo $this->requestAction('/comments/add/'.$_model.'/'.$_foreignKey, array('return'));
// plugin comments, function add function
element()只加载一个元素;即,视图片段。这几乎就像你将.ctp复制粘贴到你使用它的地方一样。唯一的区别是,可以根据需要调整缓存行为并传递选定的视图变量

requestAction()通过使用给定参数(例如URL)发送蛋糕请求,在蛋糕内部执行完整的请求。在这里,您还可以优化缓存,并且可以选择将渲染视图或控件的操作返回值作为requestAction()的返回值


IMHO这个功能——如果使用得当——是CakePHP的一个非常小的特性,因为您可以分部分创建一个站点。例如,一个动作呈现评论,一个动作呈现帖子正文,一个动作呈现菜单,一个动作请求所有这些并将其放入单个div,一个动作请求该div并将其放入布局。每一层都可以高效地缓存,这种设计在AJAX中非常有效,您总是喜欢只加载页面的某些部分,但在第一次加载页面时需要全部加载。你甚至可以用JSON和HTML来表示每种格式。

嗨,德鲁丹,谢谢你的回复,但我不太明白你的答案。也许我可以详细说明一下。我有一个文章表,我想在不同的视图中显示,这取决于作者是哪家公司。现在我在视图中调用requestAction,因为为每个项目列表创建元素似乎很困难。在您的情况下,最好是requestAction,因为您在controller中使用了一个函数。您好,sibidiba,谢谢您提供的信息。这就是我打破一切的计划。我想我正在尝试尽可能少的ctp文件,并通过缓存等方式最大限度地提高性能。我担心的是,当网站遇到严重流量时,一种方法会比另一种更好。