Yii2 - 将View中的ActiveDataProvider传递给另一个控制器

时间:2015-11-03 12:35:20

标签: gridview controller yii2 parameter-passing action

我有一个带有GridView的索引视图,显示了与日期相关的项目列表。我还在该视图上有另一个链接,我打算填充一个日历小部件,显示日历上的所有行项而不是表。

用户可能已设置了一个或多个过滤器。如何将进入View的ActiveDataProvider变量传递给另一个动作,以便我可以填充日历小部件。

编辑:

目前我测试如下:

查看:

<?= Html::a('Test', ['calendar', 'dataProvider' => $dataProvider], [ 'class' => 'btn btn-primary', ]) ?>

控制器:

public function actionCalendar($dataProvider)
    {
        print_r($dataProvider->getModels());die("");
    }

我收到错误...

  

错误请求(#400)

     

参数“dataProvider”收到的数据无效。

1 个答案:

答案 0 :(得分:1)

在控制器中您可以使用重定向

return Yii::$app->response->redirect(array('yourController/yourAction',
      'yourParam'=>$yourDataProvider));

确保yourParam名称与外部操作中的参数名称匹配

在视图中,您只需使用网址。

如果需要,添加适当的use

use yii\helpers\Url;

此示例适用于<a>代码

<a  href="<?= Url::to(['yourController/yourAction', 
            'yourParam' =>  $yourDataProvider ]) ?>"  '>your anchor text</a>

在您的情况下,您通过视图链接调用控制器/操作尝试此

   <?= Html::a('Test', ['calendar', 'dataProvider' => $dataProvider], 
        [ 
            'class' => 'btn btn-primary', 
            'method' => 'post',
        ],
  ]) ?>