2015-11-03 113 views
0

我有一个带GridView的Index视图,显示与日期相关的项目列表。我在该视图上还有另一个链接,我打算填充日历小部件,在日历中显示所有行项目而不是表格。Yii2 - 将Active View中的ActiveDataProvider传递给另一个控制器

用户可能已经设置了一个或多个过滤器。我怎样才能将视图中的ActiveDataProvider变量传递给另一个操作,以便我可以填充日历小部件。

编辑:

目前我测试如下:

VIEW:

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

控制器:

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

我得到一个错误......

错误请求(#400)

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

回答

1

在控制器可以使用重定向

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

确保了yourParam名外部动作

鉴于你可以简单地使用URL匹配帕拉姆名称。

添加适当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', 
     ], 
    ]) ?> 
+0

显示控制器/动作接收器的代码。请使用 – scaisEdge

+0

我已更新答案。希望这是有用的 – scaisEdge

+0

我实际上已经尝试过后期方法,并且它给了我同样的错误。实际上,我通过简单地使用SearchModel的GET参数创建链接来解决我的最终需求。尽管如此,我仍然对能够从视图传递复杂变量到控制器的解决方案感兴趣。也许,它击败了MVC的目的(dunno) –

相关问题