Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gridview Yii2 Basic-如何调用要在选项卡内显示的视图_Gridview_Yii2_Tabs_Php 7 - Fatal编程技术网

Gridview Yii2 Basic-如何调用要在选项卡内显示的视图

Gridview Yii2 Basic-如何调用要在选项卡内显示的视图,gridview,yii2,tabs,php-7,Gridview,Yii2,Tabs,Php 7,我希望有人能帮我解决这个问题。 在我的视图中,我正在应用TabsX::widget,希望稍后我可以在每个选项卡中显示视图。以下是视图中显示的选项卡的代码: <?= TabsX::widget( [ 'items'=>[ [ 'label'=>

我希望有人能帮我解决这个问题。 在我的视图中,我正在应用TabsX::widget,希望稍后我可以在每个选项卡中显示视图。以下是视图中显示的选项卡的代码:

<?= TabsX::widget(
                        [
                            'items'=>[
                                 [
                                    'label'=>'<i class="fas fa-home"></i> Home',
                                    'content'=>'$content1',
                                    'active'=>true
                                ],
                                [
                                    'label'=>'<i class="fas fa-user"></i> Profile',
                                    'content'=>'$content2',
                                    // 'linkOptions'=>['data-url'=>\yii\helpers\Url::to(['/site/tabs-data'])]
                                ],
                                [
                                    'label'=>'<i class="fas fa-list-alt"></i> Menu',
                                    'items'=>[
                                         [
                                             'label'=>'Option 1',
                                             'encode'=>false,
                                             'content'=>'$content3',
                                         ],
                                         [
                                             'label'=>'Option 2',
                                             'encode'=>false,
                                             'content'=>'$content4',
                                         ],
                                    ],
                                ],
                            ],
                            'position'=>TabsX::POS_ABOVE,
                            'encodeLabels'=>false
                        ]
                    ) ?>
您可以轻松地使用。就在您拥有的地方,
'content'=>“$content”
将其更改为:

'content'=> Yii::$app->controller->renderPartial("@frontend/views/tabs/mytab")

注:您知道您可以将
@frontend/views/tabs/mytab
更改为要显示的视图地址。

我的建议是将它们加载到
控制器中,在那里您调用
操作
,该操作使用
renderjax()
方法加载选项卡
视图

此方法将内容加载为渲染(包含所需的所有资源),但不包含布局

因此,在结束时,动作看起来像:

public function actionTabs(){

      $tab1 = $this->renderAjax('tab1');
      $tab2 = $this->renderAjax('tab2');
      $tab3 = $this->renderAjax('tab3');

      return $this->render('tabs', [ 
        'tab1' => $tab1, 
        'tab2' => $tab2, 
        'tab3' => $tab3 
      ]
}

没必要这么复杂地称呼它。在视图模板中,您可以使用完全相同的结果执行
$this->渲染(@frontend/views/tabs/mytab”)
。控制器的
renderPartial
方法只是该方法的包装,如果您需要渲染没有布局的视图,可以在控制器内部使用。@MichalHynčica请参阅
yii2
的文档,您可以看到差异。如果只执行
渲染
操作,您的资产将与模板一起再次加载。它们不会再次加载。在视图中,模板
$this->render()
不调用控制器的
render
方法,而是
yii\base\view::render()
。这正是我们要做的。这篇关于视图的文章中也有描述。
public function actionTabs(){

      $tab1 = $this->renderAjax('tab1');
      $tab2 = $this->renderAjax('tab2');
      $tab3 = $this->renderAjax('tab3');

      return $this->render('tabs', [ 
        'tab1' => $tab1, 
        'tab2' => $tab2, 
        'tab3' => $tab3 
      ]
}