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