Yii2 - 在视图的 index.php 中渲染 _search.php 文件
Posted
技术标签:
【中文标题】Yii2 - 在视图的 index.php 中渲染 _search.php 文件【英文标题】:Yii2 - Render _search.php file inside index.php of a view 【发布时间】:2015-09-14 00:42:45 【问题描述】:我在 Yii2 中有一个名为 eventos 的视图文件夹。此视图是一个图片库。
_view2.php 用于向公众展示图像。效果很好。
但现在我想在 _view2.php 中创建一个全局搜索输入文本。
我已经有一个用于显示图像的 GridView 小部件,但我不想使用 $searchmodel 框,所以我禁用了它们。
我想要的是在 _view2.php 文件中仅使用一个输入字段来呈现 _search.php 文件
我的问题是在 _view2.php 文件中渲染 _search.php。
这是 _view2.php 的代码:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'showOnEmpty'=>false,
'summary'=>'',
'showFooter'=>false,
'showHeader' => false,
'bordered' => false,
'striped' => false,
'hover' => true,
//'options' => ['class' => 'grid-view'],
//'layout' => "summary\nitems\npager",
'columns' => [
['class' => 'yii\grid\SerialColumn'],
//'id',
//'nome',
'descricao',
'data',
// No model -> getImageurl()
[
'label' => '',
'format' => 'raw',
'value'=> function($data) return html::a(Html::img($data->imageurl, ['width'=>'300', 'height' => "170"]), $data->foto); ,
],
[
'label' => '',
'format' => 'raw',
'value'=> function($data) return Html::a(Html::img($data->imageurl2, ['width'=>'300', 'height' => "170"]), $data->foto2); ,
],
['class' => 'yii\grid\ActionColumn', 'template' => ''],
],
]); ?>
我需要在 _view2.php 中渲染 _search.php。
_search.php 的代码:
<?php $form = ActiveForm::begin([
'action' => ['index'],
'method' => 'get',
]); ?>
<?= $form->field($model, 'globalsearch') ?>
有什么想法吗?
【问题讨论】:
【参考方案1】:已解决。
_view2.php 代码:
use yii\base\view;
echo $this->render('_search', array('model'=>$searchModel));
【讨论】:
【参考方案2】:您可以使用 renderPartial 在另一个视图中显示部分视图
例如添加这个:
<?php echo $this->renderPartial('_search', array('model'=>$model)); ?>
这是一个顺便用gii生成的例子
这是文件view/create.php的代码:
<?php
/* @var $this EventsController */
/* @var $model Events */
$this->breadcrumbs=array(
'Events'=>array('index'),
'Create',
);
$this->menu=array(
array('label'=>'List Events', 'url'=>array('index')),
array('label'=>'Admin Events', 'url'=>array('admin')),
);
?>
<h1>Create Event</h1>
<?php echo $this->renderPartial('_form', array('model'=>$model)); ?>
如您所见,“创建”视图会加载部分视图“_form”,这是您完成此操作的方式。因此,您可以在另一个视图中重用 _form 视图,例如在更新视图中。
【讨论】:
是的。从 Yii1.1 开始,我如何渲染主视图,然后渲染部分视图?是在控制器actionView2中吗?请给我一个例子好吗? 你确实把这段代码放在主视图中我会给你一个例子我编辑我的答案 抛出错误:调用未知方法:yii\web\View::renderPartial() 你把它放在主视图中了吗? 是的。我想我只需要使用 render(),而不是 renderPartial()。以上是关于Yii2 - 在视图的 index.php 中渲染 _search.php 文件的主要内容,如果未能解决你的问题,请参考以下文章