(Если это не подходящее место для публикации такого вопроса, я бы с радостью разместил его в другом месте)
Я пытаюсь создать интерактивное веб-приложение для управления ресурсами компании. У меня есть опыт работы с Symfony2, но я как бы ударил стену этим новым приложением.
Я хотел бы сделать это приложение совершенно интерактивным на стороне клиента. Почти полное приложение для одной веб-страницы. Мои предыдущие веб-приложения обычно использовали обычный шаблон MVC с страницами CRUD.
В этих простых приложениях я бы имел
/employees/
/employees/create
/employees/detail/45
/employees/update/45
/employees/delete/45
Использование symfony в этом виде приложений даст мне много преимуществ:
- Routing
- Безопасность (токены CSRF)
- FormTypes и обработка формы
- Проверка
- Интеграция с доктриной
- Twig
Особенно функциональность, подобная этой в Twig, была очень освежающей (поскольку мои модели были созданы как сущности Doctrine):
<p>{{ employee.getCurrentTask().description }}</p>
Проблема, с которой я столкнулся сейчас, заключается в том, что я чувствую, что Symfony2 на самом деле не создан для приложений с одной веб-страницей. Как только я попытаюсь добавить некоторую функциональность Ajax, я столкнулся с этими проблемами:
- Недопустимые токены CSRF
- Слишком много нерегулярной логики представления/представления в jQuery
- Добавление атрибутов данных в html для получения идентификатора и т.д.
Затем я просмотрел Knockout.js и Angularjs, но потом я чувствую, что теряю все преимущества Doctrine и Twig. В любом случае я должен перестроить свои модели на стороне клиента и поддерживать их в двух разных местах.
Итак, я придумал эту идею:
- Использовать модели и контроллеры Symfony2 для сохранения данных в базе данных, но пусть контроллеры в symfony просто отправят JSON и получат JSON (возможно, FOSRestBundle?)
- Используйте фреймворк вроде AngularJS или KnockoutJS для восстановления данных JSON на стороне клиента, чтобы использовать двустороннюю привязку.
Но как бы я решал такие проблемы, как Doctrine2 Relationships, Form Validation, CSRF, которые Symfony уже решил, но непригодны для использования, если я использую фреймворк js framework?
Все предложения приветствуются!