Управление формой ActiveForm с помощью JS

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
selfauthor
Сообщения: 26
Зарегистрирован: 2023.10.09, 19:35
Откуда: Москва

Управление формой ActiveForm с помощью JS

Сообщение selfauthor »

Всем привет!

Есть такая задача.
Есть модель ActiveRecord и есть форма ActiveForm, которая создаёт/редактирует запись.
В записи есть первое поле, которое может принимать одно из заданных значений (выпадающий список).
Нужно сделать так, чтобы при выборе того или иного значения (при создании записи):
  • какие-то поля появлялись,
  • какие-то исчезали,
  • какие-то меняли свой label,
  • какие-то меняли свой вид, например textarea превращался в input
При изменении записи это первое поле менять нельзя, поэтому тут всё можно сконфигурировать на стороне сервера. А вот при создании - неясно.
Я понимаю, как это сделать с помощью JS на обычной форме. Но как это сделать в ActiveForm, да ещё так, чтобы потом
а) при ошибках форма правильно показывалась и отмечались ошибки,
б) чтобы при перевыводе введённые данные показывались,
в) чтобы те поля, которые скрыты, не отправляли никакие данные (т.е. человек зашёл, поставил одно значение в первое поле, потом заполнил какое-то поле ниже, а потом поменял первое поле, и то заполненное исчезло; и нужно, чтобы его содержимое не передавалось).

Как всё это сделать?
Аватара пользователя
selfauthor
Сообщения: 26
Зарегистрирован: 2023.10.09, 19:35
Откуда: Москва

Re: Управление формой ActiveForm с помощью JS

Сообщение selfauthor »

Решил задачу таким образом:
С помощью ActiveForm показываю все поля сразу в своём изначальном виде.
Потом запускаю JS, который уже сам хозяйничает с тем, что создал ActiveForm.
На стороне сервера в правилах очищаю ненужные данные, в зависимости от значения первого поля.
Ответить