I would like to pass viewParams in ListView widget.
However, when I do so, I get an exception.
My code:
<?= ListView::widget([
'dataProvider' => $dataProvider,
'options' => [
'tag' => 'div',
'class' => 'all-items item-list row',
'id' => 'all-items',
],
'layout' => "<div class='col-xs-12'><p>{summary}</p></div> {items} <div class='col-xs-12'>{pager}</div>",
'emptyText' => '<div class="col-xs-12">Nothing added yet.</div>',
'itemView' => function ($order, $key, $index, $widget) {
return $this->render('_badge', [
'order' => $order
]);
},
'viewParams' => [
'isClient' => $isClient
],
'itemOptions' => [
'tag' => false,
],
]) ?>
<?php Pjax::end(); ?></div>
$isClient is passed from the Controller, however it seems that it is not recognized by the view.
And I have this exception:
[spoiler]
PHP Notice – yii\base\ErrorException
Undefined variable: isClient
5. in /var/www/test/vendor/yiisoft/yii2/widgets/ListView.php at line 193 –
An Error occurred while handling another error:
exception 'ReflectionException' with message 'Method yii\base\View::{closure:/var/www/test/common/components/views/order-badge/index.php:28-32}() does not exist' in /var/www/test/vendor/yiisoft/yii2/web/ErrorHandler.php:195
Stack trace:
#0 /var/www/test/vendor/yiisoft/yii2/web/ErrorHandler.php(195): ReflectionMethod->__construct('yii\base\View', '{closure:/var/w...')
#1 /var/www/test/vendor/yiisoft/yii2/views/errorHandler/callStackItem.php(26): yii\web\ErrorHandler->addTypeLinks('yii\base\View::...')
#2 /var/www/test/vendor/yiisoft/yii2/web/ErrorHandler.php(245): require('/var/www/yii-we...')
#3 /var/www/test/vendor/yiisoft/yii2/web/ErrorHandler.php(304): yii\web\ErrorHandler->renderFile('@yii/views/erro...', Array)
#4 /var/www/test/vendor/yiisoft/yii2/web/ErrorHandler.php(326): yii\web\ErrorHandler->renderCallStackItem('/var/www/yii-we...', 193, 'yii\base\View', '{closure:/var/w...', Array, 5)
#5 /var/www/test/vendor/yiisoft/yii2/views/errorHandler/exception.php(381): yii\web\ErrorHandler->renderCallStack(Object(yii\base\ErrorException))
#6 /var/www/test/vendor/yiisoft/yii2/web/ErrorHandler.php(245): require('/var/www/yii-we...')
#7 /var/www/test/vendor/yiisoft/yii2/web/ErrorHandler.php(116): yii\web\ErrorHandler->renderFile('@yii/views/erro...', Array)
#8 /var/www/test/vendor/yiisoft/yii2/base/ErrorHandler.php(111): yii\web\ErrorHandler->renderException(Object(yii\base\ErrorException))
#9 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\base\ErrorException))
#10 {main}
Previous exception:
exception 'yii\base\ErrorException' with message 'Undefined variable: isClient' in /var/www/test/common/components/views/order-badge/_badge.php:23
Stack trace:
#0 /var/www/test/vendor/yiisoft/yii2/base/View.php(250): yii\base\View->renderPhpFile()
#1 /var/www/test/vendor/yiisoft/yii2/base/View.php(152): yii\base\View->renderFile()
#2 /var/www/test/common/components/views/order-badge/index.php(31): yii\base\View->render()
#3 /var/www/test/vendor/yiisoft/yii2/widgets/ListView.php(193): yii\base\View->{closure:/var/www/test/common/components/views/order-badge/index.php:28-32}()
#4 /var/www/test/vendor/yiisoft/yii2/widgets/ListView.php(193): ::call_user_func()
#5 /var/www/test/vendor/yiisoft/yii2/widgets/ListView.php(124): yii\widgets\ListView->renderItem()
#6 /var/www/test/vendor/yiisoft/yii2/widgets/BaseListView.php(159): yii\widgets\ListView->renderItems()
#7 /var/www/test/vendor/yiisoft/yii2/widgets/BaseListView.php(134): yii\widgets\BaseListView->renderSection()
#8 /var/www/test/vendor/yiisoft/yii2/widgets/BaseListView.php(137): yii\widgets\BaseListView->yii\widgets\{closure}()
#9 /var/www/test/vendor/yiisoft/yii2/widgets/BaseListView.php(137): ::preg_replace_callback()
#10 /var/www/test/vendor/yiisoft/yii2/base/Widget.php(139): yii\widgets\BaseListView->run()
#11 /var/www/test/common/components/views/order-badge/index.php(37): yii\base\Widget::widget()
#12 /var/www/test/vendor/yiisoft/yii2/base/View.php(330): ::unknown()
#13 /var/www/test/vendor/yiisoft/yii2/base/View.php(250): yii\base\View->renderPhpFile()
#14 /var/www/test/vendor/yiisoft/yii2/base/View.php(152): yii\base\View->renderFile()
#15 /var/www/test/vendor/yiisoft/yii2/base/Widget.php(234): yii\base\View->render()
#16 /var/www/test/common/components/OrderBadgeWidget.php(29): yii\base\Widget->render()
#17 /var/www/test/vendor/yiisoft/yii2/base/Widget.php(139): common\components\OrderBadgeWidget->run()
#18 /var/www/test/frontend/views/history/index.php(18): yii\base\Widget::widget()
#19 /var/www/test/vendor/yiisoft/yii2/base/View.php(330): ::unknown()
#20 /var/www/test/vendor/yiisoft/yii2/base/View.php(250): yii\base\View->renderPhpFile()
#21 /var/www/test/vendor/yiisoft/yii2/base/View.php(152): yii\base\View->renderFile()
#22 /var/www/test/vendor/yiisoft/yii2/base/Controller.php(381): yii\base\View->render()
#23 /var/www/test/frontend/controllers/HistoryController.php(54): yii\base\Controller->render()
#24 /var/www/test/vendor/yiisoft/yii2/base/InlineAction.php(57): frontend\controllers\HistoryController->actionIndex()
#25 /var/www/test/vendor/yiisoft/yii2/base/InlineAction.php(57): ::call_user_func_array()
#26 /var/www/test/vendor/yiisoft/yii2/base/Controller.php(156): yii\base\InlineAction->runWithParams()
#27 /var/www/test/vendor/yiisoft/yii2/base/Module.php(523): yii\base\Controller->runAction()
#28 /var/www/test/vendor/yiisoft/yii2/web/Application.php(102): yii\base\Module->runAction()
#29 /var/www/test/vendor/yiisoft/yii2/base/Application.php(380): yii\web\Application->handleRequest()
#30 /var/www/test/frontend/web/index.php(17): yii\base\Application->run()
#31 {main}
[/spoiler]
According to the docs, I am doing everything correctly.
What could be the cause of the problem?