php - 如何在不使用 CakePHP 中各处的 using 'view/layout' 语句的情况下保持多个相似的 'if()' 文件干燥?

标签 php cakephp

我正在使用 CakePHP 开发一个应用程序,并且有两种布局:一种用于主页,另一种用于应用程序的其余部分。除了标题上的一些编码之外,它们几乎完全相同。我可以做些什么来保留DRY ,而不在整个布局中使用 if () 语句?

最佳答案

我建议使用大量元素。这样,您仍然可以将所有代码保存在一个位置。例如,如果这是您的主页布局(不包括样板):

<body>
     <?php echo $this->renderElement('pageHeader'); ?>
     <?php echo $this->renderElement('frontPageNotification'); ?>
     <?php echo $this->renderElement('navAndOtherStuff'); ?>
     ...
</body>

这是您的内部布局(您想要在其中显示除 frontPageNotification 之外的所有内容:

<body>
     <?php echo $this->renderElement('pageHeader'); ?>
     <?php echo $this->renderElement('navAndOtherStuff'); ?>
     ...
</body>

现在,如果它们几乎完全相同,我可能只会使用单个布局,并在布局本身内使用一些 if 语句来确定要显示的内容。此外,您可以通过查看 $this->params 数组来选择显示哪些元素,以找出正在加载的页面后面的 Controller 和操作。喜欢:

<body>
     <?php echo $this->renderElement('pageHeader'); ?>

     <?php if($this->params['controller'] == 'pages' && $this->params['action'] == 'index') { echo $this->renderElement('frontPageNotification'); } ?>
     <?php echo $this->renderElement('navAndOtherStuff'); ?>
     ...
</body>

诚然,这相当丑陋。只是试图呈现我能想到的所有选项:)

祝你好运

关于php - 如何在不使用 CakePHP 中各处的 using 'view/layout' 语句的情况下保持多个相似的 'if()' 文件干燥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/975590/

相关文章:

cakephp - CakePHP 中的 .ctp 文件有何用途?

mysql - 在 cakephp 中命名表

jquery - 对于 CakePHP 自动完成来说,这是可接受的 Ajax 操作吗?

CakePHP Auth only for Admin Prefix

php - 将每一行读入数组

php - 每个人都使用相同的变量 php?

php - 在表中打印 mysql 查询的结果

php - CakePHP 在 Controller 中时调用模型中的函数

php - Symfony 自动服务加载失败并显示 "Class does not exist"

PHP_AUTH_USER 未设置?