PHP框架 - 布局动态菜单

我开发PHP的一个网站,我想用一个MVC框架要做到这一点,因为我想获得的PHP框架方面的经验。

我看过的Zend,CakePHP的,而笨,我一直没能找到一个直观的方式来做到这一点。

我需要做的就是创建一个布局,这将是,例如:

<html> <head> <!--scripts go here--> </head> <body> <div id='banner'></div> <div id='menu'><?php $this->layout()->menu ?></div> <div id='container'><?php $this->layout()->content ?></div> <div id='ads'><?php $this->layout()->ads ?> <div id='footer'>blah</div> </body> </html>

我要寻找一个框架,可以做到这一点简单的没有很多的黑客,因为这应该是简单的从我的角度来完成。

这会拉菜单,内容和广告分开控制器和视图,当然是动态内容。 我不想把菜单代码到每个视图...

也许这很简单,我只是绕了错误的方式?

任何帮助表示赞赏。

谢谢,
-Ben

--------------解决方案-------------

Symfony的可以做你在找什么用的概念的组合。

  • 布局 - 这是用来装饰一个页面的主体结构。
  • 模板 - 这是由控制器连接到一个URL的主视图。
  • 片段 - 重量轻,使用您传递给它的数据。
  • 组件 - 使用,如果你需要访问模型,代码分裂演示和逻辑之间。
  • 槽 - 用于替换定义的布局的部分。

你的情况的布局将有主要内容包括使用模板逻辑是视图层的芯与其它物品将取决于他们会多少模型需要访问任一片段或组件。

该Symfony的文件对此有着充分的解释。

其实,想要在这里实现什么可以用很少偏离你已经做了,使用Zend Framework。

对于菜单,你可以使用Zend_Navigation它允许您定义网站的导航树,并创建简单的菜单。 我发现,填充Zend_Navigation容器的前端控制器插件可以让你轻松缓存的对象,所以你必须遍历您的网站的树很少表现的忧虑,

对于广告,您只需使用占位符视图助手,你可以再次使用的前端控制器插件来填充这一点。 使用插件具有计算展示次数和旋转广告的逻辑是从你的行动保持独立的优势,并轻松执行其在每一个行动的任务。

使用动作堆栈dustin.cassiday的方法是有风险的,并可能导致大规模的头痛调试您的应用程序。 和伊泰Moav的方法是现在由于真是多余Zend_Navigation

每次你提到的PHP库有模板,并可以完成你所需要的。

选择一个库,并获得与之相关的工作。 它会随着时间的推移还清。 模板引擎,如Smarty的是好的,但一个完整的框架提供了更多。

这是可能的动作堆栈控制器:

$this->_helper->actionStack('menu','index');
$this->_helper->actionStack('ads','index');

你可能不找这么多的一个模板引擎的框架。 尝试Smarty的。

Smarty的或Tempalte精简版

在蛋糕,你可以在你通过只包含一个元素把这个

echo $this->element('menu');

您可以将此元素作为复杂或简单,只要你喜欢。 如果你需要它自动突出显示你的页面的哪一部分,有几种方法。 例如,在每一个控制器/动作设定一个变量,该元件可以拿起上。

// Controller
$this->set('currentNode', 'homepage');

// Menu Element
if ($currentNode == 'homepage') {
// add class 'selected' to menu item, or something like this
}

根据多么复杂的应用程序,你也可以把它完全独立的。

// Menu Element
if ($this->controller == 'home') {
// highlight this menu item, add extra sub-items, re-calibrate flux capacitor
}

点的存在,肯定有办法做到这一点,但是这取决于你使用的框架和究竟你需要完成的任务。 它应该是相当容易做到在任何框架,和你选择的框架/模板引擎不应该依赖于这个小功能。

在Zend框架(这是唯一一个我知道那些你所提到的),有几种方法可以做到这一点。 我喜欢帮助的方式。
你的配置将有:

<html>
<head>
<!--scripts go here-->
</head>
<body>
<div id='banner'></div>
<div id='menu'><?php $this->menu() ?></div>
<div id='container'><?php $this->layout()->content ?></div>
<div id='ads'><?php $this->ads() ?>
<div id='footer'>blah</div>
</body>
</html>

你将有两个视图助手:

class Zend_View_Helper_Menu{
public function menu(){
echo "<html.........>";
}
}

class Zend_View_Helper_Ads{
public function ads(){
echo "<html.........>";
}
}

还有一种方式,这将产生从恰好你给的语法。 不熟悉这种方式,尝试此链接

在Zend Framework中,你可以通过设置ViewRenderer助手的财产是响应像这样创造的个人行为和视图布局的每个部分:

class IndexController extends Zend_Controller_Action {

public function menuAction() {

//menu code goes here

$this->_helper->viewRenderer->setResponseSegment('menu');
}

public function adsAction() {

//ads code goes here

$this->_helper->viewRenderer->setResponseSegment('ads');
}
}

等等...

然后,您可以打电话给他们的布局文件正是你所指定的方式:

<?= $this->layout()->menu; ?>
<?= $this->layout()->ads; ?>

这很容易在DooPHP框架,只需使用<!-- include 'templatefilename' -->您的视图模板。 该框架的观点部分是非常灵活的。 有一个网站上的模板引擎演示http://doophp.com/demos

分类:php 时间:2012-01-01 人气:0
分享到:

相关文章

  • 如何创建和使用Zend框架的模型一样笨? 2014-08-05

    这两个框架都有独立的模型,视图,控制器目录. 我的疑问是如何在Zend Framework的使用模式. [笨控制器] <?php class Users extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('users_model'); } function index() { // here i am using model function // $thi

  • 我可以使用Facebook的嘻哈与像Zend框架,CakePHP的,symfony的框架 2014-02-09

    昨天Facebook推出街舞,一个源代码转换器从PHP到C ++. 该组PHP的功能和结构比标准的PHP较为有限. 是目前比较流行的PHP框架(采埃孚,CakePHP的,symfony中)与街舞兼容? 如果不是,这是这些框架的一部分不可用? --------------解决方案------------- 如果我没有记错的话,街舞还没有被释放 - 即使是从Facebook的annoucement昨日联系wiki页面是没有起来. 因此,这将是一个有点难以回答,现在. 我想这将完全取决于: 所用的框架

  • 版本Zend框架,笨,Symfony和CakePHP的2 2012-05-07

    最有名的PHP框架(Zend框架,笨,Symfony的,和CakePHP)是很长一段时间的所有版本1和都在同一时间发布他们的2个版本现在虽然测试版,阿尔法,前,东西开发王. 你会选择一个新的应用程序这个时候什么框架? 为什么? --------------解决方案------------- cakephp2,因为它是我知道的. 几乎与意义相同的答案的人会给你. 除非你有一个严重的问题提供一个框架,没准你会继续使用它.

  • PHP框架(Zend的,CakePHP的,symfony中)用于asp.net的背景? 2012-09-07

    不要把它当作另一个问题重演. 我见过的其他问题太多,但我的主要问题是不同的. 我也来自一个asp.net的背景. 我在面向对象的编程习惯. 因此,考虑到我的C#背景,asp.net的方法,Windows平台和我开始在PHP(准备学习任何条件),我应该使用的PHP框架? 我最初的挖掘有利于Zend的,但我要问stackoverflow.com的专家. 为Drupal,WordPress的是,Joomla同样的问题. 或者我应该退出的PHP,并开始学习Ruby on Rails? ;) ------

  • 你需要有PHP的潜水前一个很好的知识转化框架(如Zend的,CakePHP的)? 2014-06-10

    我在使用JavaScript和jQuery比较苦恼. 我能够学习jQuery只有JavaScript的一个基本的了解(但我不断地学习JavaScript同时使用jQuery). 它是同为PHP和它的框架? 我可以开始潜入一个框架,只有PHP的基础知识(然后学习PHP(因为它是)一路走来)? 或者我需要用的框架开始前,PHP有一个深入的了解? --------------解决方案------------- 我真的建议你停止以纯PHP劳作四周,只是得到了一个框架. 我从人问"我怎么连接到MySQL&

  • Zend框架递归选项类似的CakePHP 2013-11-28

    我是新Zend框架我想在喜欢它.我正在使用PHP蛋糕递归Zend框架相同的功能. 任何一个可以帮助我在Zend框架实现这一点? 任何人都知道如何实现在Zend框架是一回事吗? --------------解决方案------------- The recursive property defines how deep CakePHP should go to fetch associated model data via find(), findAll() and read() methods.

  • PHP框架,它命名的网址? (比Zend框架等) 2013-04-04

    我真的很喜欢在Django框架指定的网址,并想知道它的PHP框架的支持这样的事情. (我相信Zend框架的做法,但请排除从您的回答,没有解释). 例如,在Django我可以命名,如"/项/ ###"为"项目 - 详细信息页",这将指向一个视图"功能",它接受一个产品ID作为参数的路径. 后来,我可能会创建一个链接(通过一个辅助功能),以"项目 - 详细信息第123页"或类似的引用地址的项目详细信息页面. 这样的话,以后我可以改

  • PHP框架类似Zend框架 2014-01-16

    我在我的项目使用的Zend:它不需要MVC,但它使用Zend类像Zend_Translate或者Zend_Validate中. 我不应该创建Zend的环境,验证一些HTTP请求参数我只需要形式和校验. Zend的是更多的类库,然后框架. 我在找PHP 5.3的类似的框架. 你能建议我? --------------解决方案------------- 看一下: Kohana的3 Kohana的是一个优雅的HMVC PHP5框架,它提供了一套丰富的组件构建Web应用程序. 它需要很少的配置,完全支持

  • Zend框架是值得吗? 2014-02-04

    我建立使用Zend框架的应用程序,我不知道这个框架是有点过于臃肿或小题大做了. 也许它的方式,我解决这个问题,但我看到使用这个框架迫使我写了这么多的代码. 任何建议或意见? --------------解决方案------------- ZF的组件非常适用于有针对性的任务 - 例如Zend_Oauth,Zend_Pdf,利用Zend_Gdata等,您可以用它们为实现这些任务,即使没有基础的应用程序上的ZF MVC结构,我绝对建议你这样做(声明:我是一个贡献者ZF这样我就可以是主观的). 至于大Z

  • 框架:Zend框架1.11 VS VS的Symfony Zend框架2(比较优势/劣势) 2014-06-11

    如何以下框架之间进行选择? 何时选择Zend的时候Symfony的 ​​,还是其他? 当然,你已经看到了这样的话题经常在互联网附近. 这一次,我想,以知道哪个框架应该对另一选择展开建设性的讨论. 我想尽快学会其中的一种,因为笨似乎有它的局限性. 有些标准我的选择缩小到流行的Zend框架和Symfony的,因为有大量的文档. 我需要练习,并教给其他员工. 我想知道,根据您的经验和研究有什么优势和两个框架的缺点. 你会问:什么是您的需求. 好了,没有和在一起. 让从小到大的网站,通过让一个解决方法.

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.622 (s). 10 q(s)