防止在渲染某些视图时渲染布局元素!

此代码片段适用于您想要阻止某些布局元素在渲染某些视图时渲染的情况。

考虑以下示例,有一个元素显示最常搜索的关键字,它名为 top_searches.ctp。此元素放置在布局中,以便在搜索框元素下方渲染。

假设现在,我们有一个索引视图,它列出了所有搜索的关键字,我们不想在调用索引视图时渲染 top_searches 元素。

我们应该在 top_searches 的最上面一行(即第 1 行)添加以下代码片段。

<?php
$e = explode('views/elements/',__FILE__);
$e[1] = str_replace('.ctp', '', $e[1]);
if (isset($this->preventElement) && $e[1] == $this->preventElement[$e[1]]) return false;
?>

上面的代码简单地提取了元素 ctp 文件相对于元素目录的路径和名称,然后它要求 View 对象的数组属性 preventElement,如果它发现元素名称被设置为一个键,该键的值也是它的名称,它将返回 false 以阻止渲染元素的剩余部分。

现在在 index.ctp 中,我们应该添加以下代码

<?php $this->preventElement['top_searches'] = 'top_searches';?>

我将上面的代码行也放在第一行,很明显,我们定义了 preventElement 属性,并设置了我们想要停止或阻止渲染的元素的名称。

此代码片段的示例如下:http://quran.2index.net 您将看到最常搜索关键字的列表,您将看到最后一个项目是一个红色按钮,链接到所有搜索关键字的完整索引,在这个链接的页面上,您将看不到最常搜索的关键字列表。注意:示例网站使用阿拉伯语。