我是PHP框架和yii的新手,我正在尝试了解视图/布局的工作原理。这就是我目前如何理解如何布局页面模板:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="page_wrp">
<?php include 'includes/top_right_nav.php' ?>
<div id="content_wrp">
<div id="content">
</div>
</div><!--#content_wrp-->
<?php include 'includes/main_nav.php' ?>
</div><!--#page_wrp-->
</body>
我明白基本的yii方式更像是这样:
<?php /* @var $this Controller */ ?>
<!DOCTYPE>
<html>
<head>
<title><?php echo CHtml::encode($this->pageTitle); ?></title>
</head>
<body>
<div class="container" id="page">
<div id="header">
<div id="logo"><?php echo CHtml::encode(Yii::app()->name); ?></div>
</div><!-- header -->
<div id="mainmenu">
<!--
DON'T WANT TO USE ZII.WIDGETS FOR MENU
WANT TO KNOW BEST WAY TO INCLUDE MY ONW NAVIAGTION MENU-
->
<?php $this->widget('zii.widgets.CMenu',array('...')); ?>
</div><!-- mainmenu -->
<?php echo $content; ?>
<div id="footer"></div><!-- footer -->
我不明白在yii / MVC的上下文中包含我自己的导航栏的最佳实践/类似方法是什么。我仍然可以使用上面的包含或我必须使用zii.widgets?如果可以使用包含在哪里放置文件?
非常感谢任何帮助。
答案 0 :(得分:2)
您不必使用Yii小部件,但建议使用它们,它们非常灵活。
在布局文件夹中为菜单标记创建一个视图文件,例如_myMenu.php
_menu.php
<ul>
<li>menu item 1</li>
<li>menu item 2</li>
</ul>
然后在你的布局中使用renderPartial()
在你的布局中渲染你的_menu.php局部视图。
main.php
<div id="mainmenu">
<?php $this->renderPartial("//layouts/_menu"); ?>
</div>
这是一个非常简单的解决方案,如果您想让菜单更加动态,您可以向控制器添加一个方法来处理这个问题。