Александр: Нет, не надо это добавлять в форму. В первом шаге надо сделать
if ($form->isValid()) {
$em->persist($book);
$em->flush();
$this->get('session')->set('book_id', $book->getId();
///...redirect
}
Во втором достать book и работать дальше
$bookId = $this->get('session')->get('book_id');
//проверить что id в сессии есть
$book = $this->getDoctrine()->getManager()->find(Book::class, $bookId);
И дальше передавать в форму и работать с частично заполненной в пером шаге сущностью.
P.S. формы лучше не формировать в контроллере, а держать в отдельных классах - это удобнее
Подзапросы - архитектурно правильный вариант, но это работает очень медленно. У нас сделано через расширения твига - работает быстро, но со временем функций и фильтров становится очень много, в них тяжело ориентироваться и поддерживать.
sim3x: не знаю, поэтому и спрашиваю. Я всю жизнь живу на десктопах, с wi-fi картами, тем более дискретными дела не имел, поэтому не знаю какие проблемы могут возникнуть.
Никита: Надо ) Но когда приходит задача, которая идеально ложится на фреймворк с комментарием "Мы уже продали битрикс" - это клиника.. Или задача на оценку мини-сервиса, для которого даже фреймворк не нужен - банальный скрипт строчек на 50 с вопросом "Какая версия битрикса нам для этого нужна". Без битрикса нельзя, клиент не поймёт за что деньги плочены... В общем я оттуда не то что ушел, а убежал вприпрыжку, радостно подергивая ногой =)
Никита: значит у вас более толковые меджеры. Наши отказывать не умели, поэтому периодически возникали франкенштейны на битриксе (например с прикрученной доктриной) там, где нужно было либо отказаться, либо полностью перепроектировать на фреймворки. )
Это как раз и называется - болото. Если с битриксом работать по уму, т.е. продавать его встроенный функционал( который бесспорно неплох, именно функционал, а не реализация) - то это поток однотипных задач: поставь, настрой, натяни верстку, финиш. А если, не дай бог, задача выходит за эти 70% - начинается ад и содомия с увеличением сроков по экспоненте, не говоря уже о нервах, которые потом приходится лечить..
P.S. с битриксом работал 2,5 года.
- Можно поподробнее - чем удобнее инжектить? Просто тяжело представить в чём может быть удобнее чем указать сервисы и получить их в контроллере/методе =)
- Eloquent для простых задач наверно проще, но доктрина предостовляет значительно больше возможностей. В частности у нас например сделано логгирование изменений, которое отрабатывает по событию сброса данных в базу, с ActiveRecord как я понимаю такое нереализуемо
- В symfony также есть генераторы моделей (из коробки), миграций (отдельно) и много другого. На практике генераторы, за исключением миграцию нужны крайне редко.
- Наличие горки валидаторов можно засчитать в плюс, хотя в симфони довольно редко чего-то не хватало, и свой валидатор прикручивается за 5 минут, валидация в контроллере так же есть
- Middleware можно считать плюсами, хотя в целом в симфони это реализуется через события.
Сергей Протько: это не SPA, это конкретная страница с динамической формой. В контексте данного вопроса - сравнение более чем адекватно. У нас была задача - ускорить работу и убрать костыли, которые в данном случае приходилось использовать с Forms. Кэширование в данном случае бесполезно, т.к. основная нагрузка была именно на обработку post-запроса, писать свой обработчик тоже смысла нет, если можно решить другими стандартными инструментами.
Я не говорю что Forms плохой, это чудесный инструмент, который мы используем для множества других форм, в т.ч. сложных, с вложенными коллекциями, трансформерами, своими типами и многим другим. Просто в данном конкретном случае Forms не подошел.