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/_statMenupartials/_actionMenu 内部渲染了一个bootstrap.widgets.TbButtonGroup 小部件。

【问题讨论】:

请发布您用于呈现该视图的代码(您调用 render() 方法的控制器操作部分) 我只留下了最后一列,但我评论了$this-&gt;renderPartial('pqrtials/_statMenu'... 并且它有效。似乎使用function($data) 在列内渲染小部件/部分会破坏布局。奇怪的是它在 Windows 中可以工作。 试试 Yii::app()->controller->renderPartial。它会起作用吗? 你很好 :) 效果很好。您应该将其添加为答案,以便我接受。 【参考方案1】:

试试:

Yii::app()->controller->renderPartial(...)

代替:

$this->renderPartial(...)

【讨论】:

以上是关于Yii 只渲染一页没有布局的主要内容,如果未能解决你的问题,请参考以下文章

Yii:如何自定义 CHtml 渲染的视图?

ZF3:设置没有布局的终端/渲染视图(Zend-Expressive)

Yii2 Captcha不渲染和显示原始数据图像

Yii 渲染函数的区别

Yii2 使用查询参数渲染 url

仅使用 Nuxt 进行服务器端渲染一页