【问题标题】:Yii booster - renderPartial the data-content of a popover?Yii booster - renderPartial 弹出框的数据内容?
【发布时间】:2013-05-08 11:42:38
【问题描述】:

我正在使用带有 YiiBooster 扩展的 Yii。我想要一个这样的弹出窗口:

array(
        'header' => '',
        'value' => function($data)
        {
            $this->widget('bootstrap.widgets.TbButton', array(
                'label'=>'Inne',
                'type'=>'primary',
                'size' => 'mini',
                'htmlOptions'=>array(
                    'data-placement'=>'right', 
                    'data-content'=> "Controller::renderPartial('_statButtons', 
                                      array('data' => $data->idProject));", 
                    'rel'=>'popover'
                ),
            ));
        }
    ),

这是在 gridview 的单元格内。我想使用renderPartial 来呈现包含一些内容的文件,但上面的代码不起作用。我怎样才能实现它?

编辑: 如果代码执行(我的代码或@Ruslans 代码)它就是结果:

Here is the text from the _statButtons partial file. End of this file.
<a id="yw2" class="btn btn-primary btn-mini" rel="popover" 
   data-placement="right" data-original-title="" title="">Inne</a>

【问题讨论】:

  • 以上代码会引发什么错误?
  • 完全没有错误。上面的方式:它只是将代码作为文本放置。如果我删除 " - 它不会呈现在 data-content 内,而是呈现为放置在按钮之前的文本。

标签: twitter-bootstrap yii popover renderpartial


【解决方案1】:

下面的代码有效。我使用 PHP 5.3

'value' => function($data) use($controller)
{
    $controller->widget('bootstrap.widgets.TbButton', array(
        'label'=>'Inne',
        'type'=>'primary',
        'size' => 'mini',
        'htmlOptions'=>array(
            'data-placement'=>'right',
            'data-content'=> $controller->renderPartial('_test',
                      array('data' => $data->title), true),
            'rel'=>'popover'
        ),
    ));
}

其中$controller 只是在呈现CGridView 小部件之前重新分配$this var。

$controller=$this;

因为在 PHP 5.3 中,闭包无法访问 $this var

据我记忆,PHP 5.4 可以访问$this。

调用Controller::renderPartial(.... - 不好的方法,因为renderPartial 不是静态函数,而是静态调用。它应该会引发错误,除非您将它们关闭。

【讨论】:

  • 代码执行是真的,但我的代码也执行。问题是它没有将其放入data-content 选项中,而是在按钮之前呈现。我在我的问题中添加了您的代码生成的 HTML。
  • @Joe:在您的情况下,两个参数被传递到renderPartial,在我的情况下,第三个参数等于true,这表示必须返回视图内容,而不是直接输出@ 987654321@
  • 哦,我的错 - 我没有注意到这一点。非常感谢!
  • 最后只是一个小问题 - 我应该怎么做才能将链接放入弹出窗口?我尝试在htmlOptions 中使用'data-html' =&gt; true,但它不起作用。
  • @Joe:我知道的唯一解决方案是手动运行popover,yiiframework.com/extension/bootstrap/#c11590
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2022-07-20
  • 2019-08-17
相关资源
最近更新 更多