mramor
@mramor
нечего о себе рассказывать.

Yii2 + GridView. Проблема с областью видимости в компоненте?

Всем привет.
Вывожу данные с помощью GridView:

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            [
				'header' => 'Магазин',
				'attribute' => 'shop_id',
				'filter' => Html::activeDropDownList(
						$searchModel,
						'shop_id',
						$shopsList,
						['class' => 'form-control']),
			],
			'name',
			'phone',

Переменную $shopsList заранее передаю через контроллер:
return $this->render('index', [
				'searchModel' => $searchModel,
				'dataProvider' => $dataProvider,
				'shopsList' => $shops

			]);

При формировании секции фильтров в GridView ее прекрасно видно, данные из нее берутся, проблем нет. А вот когда я пытаюсь изменить значение value, т.е. код обретает примерно такой вид:
<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            [
				'header' => 'Магазин',
				'attribute' => 'shop_id',
				'value' => function($data){
						return $shopsList[$data->shop_id];
					},
				'filter' => Html::activeDropDownList(
						$searchModel,
						'shop_id',
						$shopsList,
						['class' => 'form-control']),
			],
			'name',
			'phone',

то yii2 мне выкатывает ошибку: Undefined variable: shopsList

Почему $shopsList не видно в безымянной функции? Ее нужно как-то иначе туда передать?
  • Вопрос задан
  • 1734 просмотра
Решения вопроса 1
fornit1917
@fornit1917
Да, надо указывать в use
https://php.net/manual/ru/functions.anonymous.php
См. пункт Пример #3 Наследование переменных из родительской области видимости
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы