Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在yii视图中,我在何处/如何包括导航栏_Php_Yii - Fatal编程技术网

Php 在yii视图中,我在何处/如何包括导航栏

Php 在yii视图中,我在何处/如何包括导航栏,php,yii,Php,Yii,我是PHP框架和yii的新手,我试图了解视图/布局是如何工作的。这是我目前理解如何布局页面模板的方式: <!DOCTYPE html> <html> <head> </head> <body> <div id="page_wrp"> <?php include 'includes/top_right_nav.php' ?> <div id="content_w

我是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的上下文中包含我自己的导航栏的最佳实践/类似方式是什么。我仍然可以像上面那样使用include,还是必须使用zii.widgets?如果可以使用includes,文件放在哪里


任何帮助都将不胜感激。

您不必使用Yii小部件,但建议您使用它们,它们非常灵活

在layouts文件夹中为菜单标记创建一个视图文件,类似于_myMenu.php

_menu.php

<ul>    
    <li>menu item 1</li>
    <li>menu item 2</li>
</ul>

这是一个非常简单的解决方案,如果您想使菜单更具动态性,可以向控制器添加一个方法来处理此问题

谢谢,看起来还可以。我只需要弄清楚怎么做以及为什么。我有很多东西要学!再次感谢。在您的视图中,
$this
始终引用您的控制器类,因此$this->renderPartial()是CController的一个方法-当“//layouts/\u menu”传递给它时,控制器会在layout文件夹中查找\u menu.php,然后将其插入视图中。您还可以将数据传递给局部视图-本文可以帮助您现在使用
<div id="mainmenu">
    <?php $this->renderPartial("//layouts/_menu"); ?>
</div>