如何将 Yii2 小部件结果传递给变量
How to pass Yii2 widget result to variable
我只是被这个问题困住了,如何获取一个小部件的执行结果,并将其转换为变量。
我有类似的东西:
[
'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
?
好的,我刚刚找到解决问题的方法。
我把widget代码放到了一个单独的view page里。
然后,在我的另一个视图中,我输入了这段代码:
function read($file) {
ob_start();
include($file);
$content = ob_get_contents();
ob_end_clean();
return $content;
}
$contentImages = read(__DIR__ .'/widgets/widget-view.php')
其实我不确定,如果这个解决方案是安全的,但没问题。
在控制器中你可以像这样得到它
$viewParams = [
'localViewVariable' = 'something'
];
$content = $this->renderPartial('@views/widgets/widget-view', $viewParams);
// or
$content = $this->view->renderPhpFile('/full/path/to/widget.php', $viewParams);
我只是被这个问题困住了,如何获取一个小部件的执行结果,并将其转换为变量。 我有类似的东西:
[
'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
?
好的,我刚刚找到解决问题的方法。
我把widget代码放到了一个单独的view page里。
然后,在我的另一个视图中,我输入了这段代码:
function read($file) {
ob_start();
include($file);
$content = ob_get_contents();
ob_end_clean();
return $content;
}
$contentImages = read(__DIR__ .'/widgets/widget-view.php')
其实我不确定,如果这个解决方案是安全的,但没问题。
在控制器中你可以像这样得到它
$viewParams = [
'localViewVariable' = 'something'
];
$content = $this->renderPartial('@views/widgets/widget-view', $viewParams);
// or
$content = $this->view->renderPhpFile('/full/path/to/widget.php', $viewParams);