Сергей Беловенцев, т.е. просто вместо того, чтобы написать строку в конфиге формы, вы тащите целый Pjax, чтобы валидировать форму? Странные у вас понятия о простоте реализации и простоте кода. И да, клиентская валидация у вас не работает, потому что когда pjax перезагружает контейнер, инициализацию формы он заново не проводит.
Михаил, а в чем неочевидность? Ну я просто не понимаю. У приложения есть конфиг, компоненты. Вы хотите по определенным условиям отключить компонент. Ну так и отключайте! В чем проблема? Звучит так, как будто вы не программируете, а детали точите.
Сергей Беловенцев, там есть разметка. Эта форма сериализуется и отправляется на сервер, формат запроса вы можете посмотреть. Сделайте по такому же принципу
Messi, конечно нет, но это же удобно! Вы хотите руками писать всю клиентскую валидацию? Или даже отправку сериализованной формы на валидацию, а потом руками разбирать ответ и проставлять ошибки полям, серьезно?
Да, будет так. Вообще, тут, опять же, есть 2 варианта. Вы, в конце концов, можете закешировать этот запрос, и не будете заморачиваться с производительностью этого отдельно взятого момента. Либо, можете написать запрос, который все-таки предоставит вам нужные данные. Мне кажется, это вполне реально, но это требует гораздо более глубокого знания SQL на уровне переменных, циклов и прочих штук, которыми я не пользуюсь.
Sergey Zh, смотрите, метод with() после основной выборки делает еще одну по сформированному условию. Потом полученный результат кладет в исходные AR объекты так, что их не нужно запрашивать из БД снова. Есть еще методы joinWith(), innerJoinWith() и иже с ними. Они модифицируют исходный запрос для жадной загрузки через SQL JOIN'ы. Вся суть проблемы, насколько я понял, состоит в том, что вы хотите получить жадную загрузку моделей с условиями, для каждой сущности по 10 зависимых. Без детального понимания, как работает жадная загрузка на уровне фреймворка, у вас этого не выйдет.
Но вообще, вашу задачу можно в принципе сделать точно также, двумя запросами и геттером, но это потребует чуть больше кода.
Игорь, да это не важно. Тебе все равно нужно понять, какую проблему ты решаешь, в каких ситуациях она возникает. Да банально не понял таску - все равно, как ни крути, нужно общаться. И заказчиком конкретно для исполнителя в данном случае будет являться PM, тимлид, PO (нужное подчеркнуть). Так что товарищ выше прав на все 100