如何将Yii2小部件结果传递给变量

时间:2018-05-06 22:37:38

标签: php yii2 yii2-advanced-app

我只是坚持这个问题,如何获得一个小部件的执行结果,并将其转换为变量。 我有类似的地方:

[
    'label' => 'Images',
    'content' => $contentImages,
],

我还有一个小部件:

<?php OwlCarouselWidget::begin(); ?>

    <div class="item-class"><img src="/img/girl.png" alt="Image 1"></div>
    <div class="item-class"><img src="/img/girl.png" alt="Image 2"></div>
    <div class="item-class"><img src="/img/girl.png" alt="Image 3"></div>

<?php OwlCarouselWidget::end(); ?>

但问题是,如何将小部件的结果作为HTML并将其放入变量$contentImages

2 个答案:

答案 0 :(得分:0)

好的,我刚刚发现了如何解决我的问题。

我将小部件代码放到一个视图页面。

然后,在我的另一个视图中,我把这段代码:

function read($file) {
ob_start();
include($file);
$content = ob_get_contents();
ob_end_clean();
return $content; 
}  
    $contentImages = read(__DIR__ .'/widgets/widget-view.php')

实际上我不确定,如果这个解决方案是安全的,但还可以。

答案 1 :(得分:0)

从控制器中你可以像这样得到它

$viewParams = [
    'localViewVariable' = 'something'
];

$content = $this->renderPartial('@views/widgets/widget-view', $viewParams);
// or
$content = $this->view->renderPhpFile('/full/path/to/widget.php', $viewParams);