CakePHP 1.3:$ this-> render()vs $ this-> element()

问题描述:

除了视图文件的位置,使用(我在视图文件中使用这些调用的小HTML代码用于多个视图文件)

echo $this->render('some_view_file', false) vs echo $this->element('some_view_file')

我一直在使用$this->element()一段时间,因为我读过的所有教程和指南都使用了这种方法,但我的元素文件夹对于不同的控制器有太多的文件。我最近发现我可以使用$this->render(),并将查看文件保存在app/view/controller_name的各自文件夹中,这使文件组织变得更加简单和清晰。

+0

你在哪里使用这些?在视图或控制器?本身应该回答你的问题... – mark 2013-02-18 16:21:48

+0

我不确定这个问题有很好的答案。如果你对细微的差异感兴趣,我建议阅读代码本身。它非常可读。除了'View :: render()'自动设置视图变量,假设布局和视图路径等之外,两者之间没有太大的区别。 – jeremyharris 2013-02-18 16:25:27

+0

还要记住OP在此问题时正在使用CakePHP 1.3 。 – jeremyharris 2013-02-18 16:27:49

$这个 - >渲染()

$this->render()是你的控制器代码。它告诉你的控制器动作显示哪个文件。默认情况下,你不需要使用它 - 如果你正确地命名你的视图文件并将它们放在正确的文件夹中,它们将自动呈现。 (也有在那里你会使用它的情况,但是 - 它不是用在每一个动作)

$这个 - >元素()

$this->element()是代码为您的视图中。它用于加载您希望能够在视图中的多个位置或多个视图中使用的小部分代码。

根据CakePHP的书, “元件” 是:

越小,视代码可重复使用的比特。元素通常在视图内呈现为 。

所以,你应该使用视图,而不是元素作为主“页”文件,和你的意见中,使用$this->element()在可重用代码块拉。

+0

我对OP做了一些编辑。我使用'element()'来查看多次使用的小视图代码。 – musicliftsme 2013-02-18 16:30:36

+1

是的 - 每个答案使用元素。 – Dave 2013-02-18 16:58:20