10

谁能向我解释如何在 CakePhP 2.0 中使用“视图块”?

我已经阅读了 cakephp 网站上的文档,但是对于新手用户来说它错过了很多……例如,我在哪里需要什么文件,你如何在代码中调用一个块,代码块是否需要它自己的文件夹/控制器/模型/视图等?我真的迷路了!

如果有人可以从头到尾解释如何将块用作侧边栏,那就太好了。

例如,我有一个侧边栏,我想在不同的页面上使用,但我想将侧边栏分成不同的元素以在块内调用,例如

<div class="heading1">
  <h2>Heading 1</h2>
</div>
<div class="ul-list1">
<ul> 
<li>list item 1</li>
<li>list item 2</li>
</ul>
</div>
<div class="heading2">
  <h2>Heading 2</h2>
</div>
<div class="ul-list1">
<ul> 
<li>list item 3</li>
<li>list item 4</li>
</ul>
</div>

所以把它分成两个元素(标题1和标题2)

我将如何编写该块的代码,在哪里插入此代码以及我需要哪些页面?(请针对新手 CakePhP 用户,因为我对此感到非常困惑!)

4

3 回答 3

7

您应该创建一个如下所示的元素。

// app/views/elements/headings.ctp
<?php $this->start('heading1'); ?>
<div class="heading1">
    <h2>Heading 1</h2>
</div>
<div class="ul-list1">
    <ul> 
        <li>list item 1</li>
        <li>list item 2</li>
    </ul>
</div>
<?php $this->end(); ?>


<?php $this->start('heading2'); ?>
<div class="heading2">
    <h2>Heading 2</h2>
</div>

<div class="ul-list1">
    <ul> 
        <li>list item 3</li>
        <li>list item 4</li>
    </ul>
</div>
<?php $this->end(); ?>
// end element file

// include the element first before getting block in the views or layout file.
<?php 
    echo $this->element('headings');
?>

// after that you will able to display block anywhere inside view files or layout also with following statements.

<?php
    // for heading first 
    echo $this->fetch('heading1');

    // for heading second.
    echo $this->fetch('heading2');
?>
于 2013-10-15T05:29:46.757 回答
1

您可以在视图或元素中使用以下代码。

// for start the block code
$this->start('block_name');

// your html code will goes here, even you can also specify the element reference.

$this->end(); // close the block.

在您的布局中,您可以获取/显示视图块代码

echo $this->fetch('block_name'); // anywhere in the layout.

确保您在视图和布局中指定了相同的块名称。

于 2013-10-12T01:49:50.280 回答
0

当您这样做时,在您的布局或元素中:

    $this->fetch ("block_name");
    
无论您何时定义块或覆盖它...每次在您的其他元素中您都可以执行 $this->start ("block_name") 或 $this->append ("block_name") ... cakephp 将将您的所有操作“合并”到该块并将它们放在适当的位置(在您的布局中定义)......

使用块的示例...想象一下布局标题中的一个 css 块和页脚中的 javascript 块...就像这样,如果有特定的 css 或 javascript 用于特定的功能,它们将被添加到该块中,您将生成的 html 中间没有脚本和 css ......

希望对你有帮助

于 2017-01-17T22:44:13.617 回答