繁体   English   中英

构建 CakePHP 视图

[英]Structuring CakePHP Views

长期读者,第一次发帖:)

我刚刚开始我的第一个 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>

然后我的 /Customer/index 视图:

View index.ctp

<?php $this->extend('common'); ?>

<h1>Customers</h1>

.... do stuff with customers .....

它扩展了我的 /Customer/common 视图以引入顶部导航栏,每个视图都必须包含此扩展线,如果有不同的方法,最好不必这样做。

目前,链接只是固定的,但我希望控制器能够创建这些选项。

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

我认为您应该能够将这些链接放在您的布局文件中。 但是您可能必须将它们重新编写为 "$this->Html->link("Index",array("controller => $controller","action" => "index");" 等。

要在布局文件中获取当前控制器,您可以说“$controller = $this->params['controller']”。

是的,在四处搜索之后,我想我找到了一种至少可以做其中一件事情的好方法。

对于顶部导航,链接将由控制器填充,我将从控制器传递一个数组来查看。 然后,不是在每个视图中都有一个 ->extend,我将创建一个元素来将数组转换为导航栏,然后 -> 在布局中获取它。

这使我进入下一个问题......
CakePHP 布局中有多少代码是可以的?

嗨,您可以使用 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM