长时间读者,第一次海报:)
我刚刚开始使用我的第一个Cake应用程序,所以希望你们能帮助我。
第一个问题是关于扩展/包含视图。我意识到布局/视图的工作方式是防止代码不得不重复,但我无法理解如何在没有重复的情况下设置我想做的事情。
除了页眉和页脚之外,我的页面布局还包括一个左侧导航栏,我希望控制器在适当的时候添加自己,以及一个顶部导航栏,它将由当前控制器中的相应页面填充。
我尝试在控制器内创建一个视图块,但它没有用,我有点难过。
以下是我所拥有的:
我的默认布局包括侧边栏,目前只是硬编码,内容:
Layout default.ctp
<!DOCTYPE html>
<html>
<head>.....</head>
<body>
...
<div id='leftnav'>
This is where I want my left nav
I want controllers to be able to add themselves
here.
</div>
<?php echo $this->fetch('content'); ?>
</body>
</html>
然后我的/客户/索引视图:
View index.ctp
<?php $this->extend('common'); ?>
<h1>Customers</h1>
.... do stuff with customers .....
这扩展了我的/客户/公共视图以引入顶部导航栏,每个视图必须包含此延伸线,如果有不同的方式,那么不必去做。
目前,链接刚刚修复,但我希望控制器能够创建这些选项。
View common.ctp
<?php
echo $this->Html->Link('index', "index")." ";
echo $this->Html->Link('find', 'find')." ";
echo $this->Html->Link('add', 'add')." ";
echo $this->Html->Link('details', 'details');
echo $this->Session->flash();
echo $this->fetch('content');
?>
欣赏你的帮助欢呼! :D
答案 0 :(得分:0)
我认为你应该能够将这些链接放在你的布局文件中。但您可能必须将它们重新编写为“$ this-&gt; Html-&gt; link(”索引“,数组(”controller =&gt; $ controller“,”action“=&gt;”index“);”等
要在布局文件中获取当前控制器,您可以说“$ controller = $ this-&gt; params ['controller']”。
答案 1 :(得分:0)
对于顶部导航,控制器将填充链接,我将从控制器传递一个数组进行查看。然后,不是在每个视图中都使用 - &gt;扩展而是创建一个元素来将数组转换为导航栏,并且 - >在布局中获取它。
这引出了我的下一个问题......
How much code is ok in a CakePHP Layout?
答案 2 :(得分:0)
嗨,您可以使用Cake PHP HTML Helper https://book.cakephp.org/3/en/views/helpers/html.html#creating-links
echo $this->Html->link('Users List', ['controller' => 'Users','action' => 'index']);
输出将如下所示:
<a href="/users/index">Users List</a>