Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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_Sidebar - Fatal编程技术网

Php Yii中的动态布局

Php Yii中的动态布局,php,yii,sidebar,Php,Yii,Sidebar,我有一个Yii应用程序,在布局中我有一个静态侧栏。我想根据控制器操作或视图更改侧边栏的内容。目前,在views/layouts/main.php文件中,我有一个侧栏定义为: <div class="sidebar">hello!</div> $image对象在图像控制器和测试操作中定义 简言之,当控制器为image且操作为test时,我希望显示一个侧栏,但是,我不希望有完全不同的布局。我如何才能做到这一点?您可以使用getController(),getAction()

我有一个Yii应用程序,在布局中我有一个静态侧栏。我想根据控制器操作或视图更改侧边栏的内容。目前,在
views/layouts/main.php
文件中,我有一个侧栏定义为:

<div class="sidebar">hello!</div>
$image对象在
图像
控制器和
测试
操作中定义


简言之,当控制器为
image
且操作为
test
时,我希望显示一个侧栏,但是,我不希望有完全不同的布局。我如何才能做到这一点?

您可以使用
getController()
getAction()
像这样进行一个简单的
if-else
检查:

if(Yii::app()->getController()->getId()=='image' && Yii::app()->getController()->getAction()->getId()=='test'){
    echo '<div class="sidebar">Created at '.$this->image->created_at.'</div>'; 
}
else
    echo '<div class="sidebar">hello!</div>';
这将允许我们使用
$This->image->property
访问布局中的图像


同样在布局中,
$this
指的是当前的控制器,因此我们也可以使用
$this->id
而不是
Yii::app()->getController()->getId()
来获取控制器id(这里的名称是图像)和
$this->action
而不是
Yii::app()->getController()->getAction()->getId()
获取操作id。

您可以使用
getController()
getAction()
进行简单的
检查,如下所示:

if(Yii::app()->getController()->getId()=='image' && Yii::app()->getController()->getAction()->getId()=='test'){
    echo '<div class="sidebar">Created at '.$this->image->created_at.'</div>'; 
}
else
    echo '<div class="sidebar">hello!</div>';
这将允许我们使用
$This->image->property
访问布局中的图像


同样在布局中,
$this
指的是当前的控制器,因此我们也可以使用
$this->id
而不是
Yii::app()->getController()->getId()
来获取控制器id(这里的名称是图像)和
$this->action
而不是
Yii::app()->getController()->getAction()->getId()
获取动作id。

这是clip的工作。在布局中:

<div class="sidebar">
    <?php if(!empty($this->clips['sidebar'])) {
        echo $this->clips['sidebar'];
    } else { ?>
        hello
    <?php } ?>
</div>

你好
在你看来:

<?php $this->beginClip('sidebar'); ?>
    Created at <? echo $image->created_at; ?>
<?php $this->endClip(); ?>

创建于

这是为clip所做的工作。在布局中:

<div class="sidebar">
    <?php if(!empty($this->clips['sidebar'])) {
        echo $this->clips['sidebar'];
    } else { ?>
        hello
    <?php } ?>
</div>

你好
在你看来:

<?php $this->beginClip('sidebar'); ?>
    Created at <? echo $image->created_at; ?>
<?php $this->endClip(); ?>

创建于

尝试使用
Yii::app()->controller->id
作为控制器名称和
Yii::app()->controller->action->id
?尝试使用
Yii::app()->controller->id
作为控制器名称和
Yii::app()->controller->action->id
?正如Llamer评论的那样,您也可以使用
Yii::app()->控制器->id
etcmashingan下面的解决方案也需要注意,使用CClipWidget。正如llamerr评论的那样,您也可以使用
Yii::app()->controller->id
etcmashingan下面的解决方案也需要注意,使用CClipWidget。