Exebeche
@Exebeche
Осваиваю программирование

Как в yii2 реализовать форму с аттрибутами из БД?

Имеется форма, поля которой должны браться из БД т.к. их количество и порядок может меняться.
Как реализовать поля формы чтобы все нужные мне "детали" брались из бд?
Например в
<?= $form->field($model, 'username')->textInput(['placeholder' => 'Почта']) ?>
аттрибут username
При попытке вставить на это место '$item->name' выдает ошибку
Exception 'yii\base\InvalidParamException' with message 'Attribute name must contain word characters only.'

Есть ли какой-то способ это решить или для подобной задачи нужно отказаться от Activeform и реализовать простой версткой таблицы с нужными вставками переменных из БД?
  • Вопрос задан
  • 335 просмотров
Пригласить эксперта
Ответы на вопрос 2
doniys_a
@doniys_a
Backend-разработчик (Php, node.js, python, ruby)
Хм...
В реляционной структуре запись имени столбца вида $item->name недопустима.

Рилейшины можете обрабатывать, в крайнем случае использовать репитер (jquery.repeater) например

Или вот этот виджет, https://github.com/unclead/yii2-multiple-input

Я правда от него остался не в восторге и пилил свой, но почти свалил из мира Yii разработчиков и так и не дописал до фин точки свое решение. В любом случае, работа с Relation данными и уж тем более рипетарами не очень поддерживается коробкой Yii.

И вот просто интетесно, где у вас аттрибут называется $item->name ? Я так понимаю, $item - некий объект с данными, и вам нужно его отредактировать.

Множественные рилейшины обрабатывать Yii из коробки тоже не умеет. Я для этого писал трейт
https://github.com/sonrac/yii2-deep-relation-savin...

Опишите как то детальнее свою проблему. Из описания выше сложно понять, что вам нужно.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
'$item->name' - это строка и она содержит не допустимые символы, все верно
$item->name - это переменная, которая вероятно содержит строку, без не допустимых символов, так что именно ее видимо и надо вставлять

если короче, кавычки лишние
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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