我有一个带有GridView的索引视图,显示了与日期相关的项目列表。我还在该视图上有另一个链接,我打算填充一个日历小部件,显示日历上的所有行项而不是表。
用户可能已设置了一个或多个过滤器。如何将进入View的ActiveDataProvider变量传递给另一个动作,以便我可以填充日历小部件。
编辑:
目前我测试如下:
查看:
<?= Html::a('Test', ['calendar', 'dataProvider' => $dataProvider], [ 'class' => 'btn btn-primary', ]) ?>
控制器:
public function actionCalendar($dataProvider)
{
print_r($dataProvider->getModels());die("");
}
我收到错误...
错误请求(#400)
参数“dataProvider”收到的数据无效。
答案 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',
],
]) ?>