viewParams в ListView не создает переменные

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
panda
Сообщения: 14
Зарегистрирован: 2017.07.18, 16:16

viewParams в ListView не создает переменные

Сообщение panda »

В одном view-файле я создаю виджет ListView

Код: Выделить всё

<?=
    \yii\widgets\ListView::widget([
        'dataProvider' => $dp,
        'itemView' => 'item',
        'layout' => '{items}',
        'viewParams' => [
            'id' => 123
        ],
        'showOnEmpty' => false,
        'emptyText' => ''
    ])
?>
В item.php пытаюсь вызвать переменную $id,

Код: Выделить всё

<?php
echo $model['name'];
echo $id;
но получаю ошибку Undefined variable: id

Специально поставила перед вызовом $id вызов модели, чтобы убедиться, что item.php вызывается и модель в него передается. Ошибка появляется только на переменной. Имя переменной может быть любым.

В интернете нашла решение похожей проблемы "указать в itemView строку вместо функции". Но у меня это уже строка.
lenbord
Сообщения: 49
Зарегистрирован: 2016.01.12, 10:48
Контактная информация:

Re: viewParams в ListView не создает переменные

Сообщение lenbord »

а файл с вызовом виджета и item.php лежат в одной директории?
panda
Сообщения: 14
Зарегистрирован: 2017.07.18, 16:16

Re: viewParams в ListView не создает переменные

Сообщение panda »

lenbord писал(а): 2018.02.14, 18:13 а файл с вызовом виджета и item.php лежат в одной директории?
Да.
Pa3Py6aka
Сообщения: 10
Зарегистрирован: 2016.07.12, 00:58

Re: viewParams в ListView не создает переменные

Сообщение Pa3Py6aka »

Продублировал весь ваш код у себя, у меня всё отлично работает, ошибки нет
panda
Сообщения: 14
Зарегистрирован: 2017.07.18, 16:16

Re: viewParams в ListView не создает переменные

Сообщение panda »

Pa3Py6aka писал(а): 2018.02.14, 22:27 Продублировал весь ваш код у себя, у меня всё отлично работает, ошибки нет
Пришла в голову идея: полностью скопировать файлы в другую часть приложения. И все заработало.

Это не отменяет того факта, что в нужной части оно по-прежнему не работает, но круг поисков сузился. Видимо, дело в том, что код находится в виджете. Осталось только выяснить что за конфликт происходит...

Есть идеи?
lenbord
Сообщения: 49
Зарегистрирован: 2016.01.12, 10:48
Контактная информация:

Re: viewParams в ListView не создает переменные

Сообщение lenbord »

Какой именно код находится в виджете?
panda
Сообщения: 14
Зарегистрирован: 2017.07.18, 16:16

Re: viewParams в ListView не создает переменные

Сообщение panda »

lenbord писал(а): 2018.02.15, 18:22 Какой именно код находится в виджете?
Из файла виджета вызывается рендер view-файла filter.php. В нем вызывается ListView

Структура

Код: Выделить всё

widgets (folder)
--Filter (folder)
----filter.php (здесь вызывается ListView и передает переменную через viewParams)
----item.php (здесь не появляется переменных, переданных через viewParams)
--FilterWidget.php (здесь в run() происходит рендер filter.php)
На всякий случай уточню еще раз. Все файлы view видимы из виджета и друг из друга и отрабатывают как нужно, если не пытаться обращаться к переменным из viewParams
lenbord
Сообщения: 49
Зарегистрирован: 2016.01.12, 10:48
Контактная информация:

Re: viewParams в ListView не создает переменные

Сообщение lenbord »

app/widgets/Filter/FilterWidget.php

https://pastebin.com/dTbm0fAe

app/widgets/Filter/views/filter.php
https://pastebin.com/RB6ntLg2

app/widgets/Filter/views/item.php
https://pastebin.com/eSBn3vgS

result
http://joxi.ru/v29RaVVCGaL3dA
;)
panda
Сообщения: 14
Зарегистрирован: 2017.07.18, 16:16

Re: viewParams в ListView не создает переменные

Сообщение panda »

Спасибо. Проблема решена путем переименования переменной. Видимо те несколько раз, когда я меняла названия переменных случайно использовала какие-то зарезервированные слова или что-то вроде того.

с 'id' не работает. Предыдущие названия переменных, я к сожалению уже забыла, но не работало на нескольких вариантах (из чего я и сделала вывод, что не работает совсем)

upd. Заработало с id... Я не понимаю, что происходило вообще...

Подозреваю себя в невнимательности, но остался старый код, который я копировала, когда не работало - они идентичны насколько я вижу...
Изображение
panda
Сообщения: 14
Зарегистрирован: 2017.07.18, 16:16

Re: viewParams в ListView не создает переменные

Сообщение panda »

Блин. И все-таки невнимательность.

Фильтр имеет подпункты и item.php вызывает еще item.php

Я забыла об этом еще одном ListView внутри item, а ошибку вызывал он, так как в него я не передавала viewParams.

Теперь точно проблема решена
Ответить