Yii 只渲染一页没有布局
Posted
技术标签:
【中文标题】Yii 只渲染一页没有布局【英文标题】:Yii renders only one page without layout 【发布时间】:2013-05-18 15:48:19 【问题描述】:我有一个奇怪的问题。我将我的网站复制到生产环境中(从 Windows 到 ubuntu)。我纠正了几个大/小字母问题,应用程序开始正常工作。直到我进入一个看起来好像没有布局的页面。没有错误。 此外 - firebug 没有显示任何 CSS 样式或任何东西。在 html 源代码中也缺少布局代码。 这可能是什么原因?
编辑:
控制器部分:
$dataProvider = Projects::model()->getInviteProjectsProvider();
$this->render('invite', array(
'dataProvider' => $dataProvider
));
它返回 CActiveDataProvider。
查看:
<?php
$this->breadcrumbs=array(
'Projekty' => array('admin'),
'Zapraszanie',
);
$this->renderPartial('_allMenu');
?>
<link rel="stylesheet" type="text/css" href="<?php echo $this->module->assetsUrl; ?>/css/projects.css"/>
<h1>Projekty aktywne - zapraszanie</h1>
<?php
$this->widget('bootstrap.widgets.TbExtendedGridView', array(
'id' => 'invite-grid',
'type' => 'striped condensed',
'dataProvider' => $dataProvider,
'rowCssClassExpression' => '($data->leftCustomers<100) ? "error":""',
'columns' => array(
array(
'name' => 'idProject',
'htmlOptions' => array('width' => '60px', 'style' => 'text-align: right;', 'class' => 'gridIdColumn'),
),
'name',
array(
'name' => 'leftCustomers',
'header' => 'Pozostało <i class="icon-info-sign" rel="tooltipbootstrap" data-original-title="Gdy wartość ta jest mniejsza niż 100 - rekord jest podświetlony na czerwono"/>',
),
'confirmStart',
'presentationDate',
array(
'class' => 'bootstrap.widgets.TbRelationalColumn',
'name' => 'Statystyki',
'value' => '"Pokaż"',
'url' => $this->createUrl('dynamicProjectStats')
),
array(
'header' => 'Postęp <i class="icon-info-sign" rel="tooltipbootstrap" data-original-title="Liczba zaproszeń / Limit zaproszeń"/>',
'value' => function($data)
$prc = round(($data->projectMaxInvites > 0) ? ($data->projectInvites)/ $data->projectMaxInvites * 100 : 0, 2);
Controller::widget('bootstrap.widgets.TbProgress', array(
'percent' => $prc,
'htmlOptions' => array(
'style' => 'height: 20px; margin-bottom: -20px',
'rel' => 'tooltipbootstrap',
'data-original-title' => $prc." %",
),
));
,
),
array(
'class' => 'bootstrap.widgets.TbButtonColumn',
'template' => 'viewupdatedelete',
'htmlOptions' => array(
'style' => 'width: 40px;',
),
),
array(
'header' => '',
'htmlOptions' => array('style' => 'width: 43px'),
'value' => function($data)
$this->renderPartial('partials/_actionMenu', array('idProject' => $data->idProject, 'activated' => true, 'afterAction' => 'removeActiveProject'));
),
array(
'header' => '',
'value' => function($data)
$this->renderPartial('partials/_statMenu', array('idProject' => $data->idProject, 'showIcon' => true));
),
)
));
?>
我注意到,如果我注释掉使用 function($data)
的列 - 它显示正常。当我离开时 - 没有显示布局。
编辑2:
也许我应该注意到在partials/_statMenu
和partials/_actionMenu
内部渲染了一个bootstrap.widgets.TbButtonGroup
小部件。
【问题讨论】:
请发布您用于呈现该视图的代码(您调用 render() 方法的控制器操作部分) 我只留下了最后一列,但我评论了$this->renderPartial('pqrtials/_statMenu'...
并且它有效。似乎使用function($data)
在列内渲染小部件/部分会破坏布局。奇怪的是它在 Windows 中可以工作。
试试 Yii::app()->controller->renderPartial。它会起作用吗?
你很好 :) 效果很好。您应该将其添加为答案,以便我接受。
【参考方案1】:
试试:
Yii::app()->controller->renderPartial(...)
代替:
$this->renderPartial(...)
【讨论】:
以上是关于Yii 只渲染一页没有布局的主要内容,如果未能解决你的问题,请参考以下文章