gpt4 book ai didi

cakephp - cakephp中的 View block 或元素之间有区别吗?

转载 作者:行者123 更新时间:2023-12-04 23:01:05 28 4
gpt4 key购买 nike

将 View 块或元素用于简单的导航栏,或带有 mysql 内容的动态菜单(使用 requestAction() 方法)有什么区别?哪个更合适?

最佳答案

是,有一点不同。元素只是您在单独的 .ctp 文件中编写的 php/HTML 片段,该文件将插入您调用 $this->element() 的位置。 .

块更难解释。块是您可以在别处定义的 View 区域。块甚至可以包含元素。我能想到的解释块的最好例子是在标准的 CakePHP 布局中,标题中有几行

echo $this->fetch('meta');
echo $this->fetch('css');
echo $this->fetch('script');

这些是说在这个位置渲染块“meta”、“css”和“script”的行。即使在 $this->fetch(); 之后,您也可以在 View 中编辑元、css、脚本块。调用相应的块。例如,我一直使用以下内容:
echo $this->Html->script('javascript', array('block' => 'script')); 

这会将 javascript 包含添加到脚本块中,我可以在 View 文件中、元素中、任何地方使用它。所以,我使用这个技巧来根据您正在查看的 view.ctp 文件包含哪些 javascript 文件。

我应该注意脚本、css 和元块最终定义的方式与您通常定义块的方式不同。通常定义块内容的方式是这样的:
$this->start('block');
//Block contents here
$this->end();

什么时候应该使用元素 vs 块?

在大多数情况下,元素会足够好。你甚至可以在不使用块的情况下完成几乎任何事情,但如果你知道如何使用它们,它们会很方便,或者可以带来更好的设计。

使用块,查找您知道要重用 View 的某些部分的情况,但该部分基于尚无法确定的某些内容存在一些变化。

布局块是一个常见的例子。也许您想在布局中显示页面的名称。您可以设置 $name Controller Action 中的变量。但是有一种可能性,您稍后可能希望重新主题化站点,然后您不再希望在新主题中显示页面名称。然后,您应该从 Controller 中删除设置 $name 变量的行,以保持干净。或者,您可以通过使用块并定义应在 view.ctp 文件本身中显示的页面名称来避免此问题。现在您的应用程序更像是 MVC。

在官方食谱中阅读更多关于元素和块的信息: http://book.cakephp.org/2.0/en/views.html

关于cakephp - cakephp中的 View block 或元素之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24211210/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com