Symfony и Single-page уеб приложения
Дали е възможно в някоя от следващите лекции да се представи накратко какъв би следвало да е подхода при изграждане на single-page приложения, в които да участва Symfony/Laravel или подобни.
По-специално ме интересува:
- Има ли въобще смисъл (ако изключим backend частта им)?
- В основата на Symfony е рутинга - как се връзва с SPA подхода, при който такъв практически липсва?
- Доста от популярните JS frameworks - KendoUI, ExtJS, Webix, идват със собствени развити компоненти за изграждане на форми - как/дали техните форми могат да се интегрират с form-функционалностите на Symfony? Например - във втората лекция видяхме как с една команда от конзолата Symfony генерира CRUD ресурси, вкл. форми - но какво правим ако искаме тези форми да идват от JS библиотека?
Опитвам се да схвана как Symfony би ми била полезна и как бих могъл да я ползвам в SPA проектите си, но от всичко разбрано досега - намирам приложение единствено за backend частта - модели, Doctrine. Не и за формите и рутинга. Едно пояснение в лекцията според мен ще е от полза на всички
Разбирам, вкл. и частта в P.S.
В такъв случай, може би ще е полезно да се демонстрира как да ползваме САМО ЧАСТ от бъндълите на Symfony в подобни приложения - доколкото разбрах това е възможно. Но чисто технически - би било полезно да се покаже как става, особено пък ако трябва symfony да се интегрира в готов проект. Например - представете си че имаме готово работещо приложение, при което комуникацията с базата данни и обработката на обектите в бекенда е направена по старомоден начин и искаме да се възползваме от Doctrine/Entity благините на Symfony за да сме в крак с времето.
Откъде въобще да започнем, инсталация, файлова структура? :)
Компонентите са библиотеки, които се намират в повечето инструменти за разрешаване на зависимости, като composer. Инсталираш това, което ти трябва, с composer и го получаваш в проекта си. После ползваш, както е документирано (в документацията на компонента) да се ползва. Напримeр Doctrine ще се наложи да си конфигурираш достъпа до базата, преди да инстанцираш EntityManager-а, например :-)
Например REST API не ти трябва Twig Bundle-а на Symfony. Достатъчен ти е Routing компонента, някоя библиотека за сериализиране (например JMSSerializer) и достъп до база (Doctrine, Propel). Пишеш си методчета в контролери, които връщат всички ресурси, единичен ресурс и т.н. в сериализиран JSON формат и ги правиш да отговарят на съответните семантични REST маршрути (пр. GET /api/users (all users); GET /api/users/{id} (single user); POST /api/users (create user); PUT /api/users/{id} (edit user)).
ОК, ако примерно имам готово написано приложение - но то няма нищо общо с файловата структура на едно Symfony приложение, какво ще се случи при инсталация с Composer на Symfony компонент, Routing-а например? Ще се създадат ли папки от рода на app, vendor и т.н. - и няма ли да се намажат с евентуално съществуващите такива?
Не ти трябват тези папки, за да ползваш маршрутизиращия компонент на Symfony. vendor вероятно ще се създаде заради нуждата от папка, в която да стоят външните библиотеки (в composer.json файла се указва коя е vendor-dir-a: https://semaphoreci.com/community/tutorials/getting-started-with-composer-for-php-dependency-management)
https://symfony.com/doc/current/components/routing.html
Както може да видиш - може да дефинираш маршрутите прогрматично в кода, но може и да използваш файл, от който да бъдат заредени. Като ти в кода (стартовата точка на приложението, например) ще имаш два реда код, в които казваш от кой файл да се заредят.
Мисля, че е най-добре нещата, които питаш да ги тестваш. Ще ти отнеме около 10 минути да видиш какво ще се получи, ако в готов проект (ако щеш тестов готов проект, в който има два файла само) се опиташ да дръпнеш този или онзи компонент.
Мерси за информацията!
Може да видиш тук http://symfony.com/doc/current/configuration/micro_kernel_trait.html как се създава Symfony micro-framework и се добавят тези bundles, от които се нуждаеш. Бих те посъветвал да си направиш отделна папка, където да си инсталираш Symfony micro-framework-а, да си направиш необходимите методи/routes (например: http://localhost:8000/v2/products) и постепенно да мигрираш съществуващото си приложение към Symfony. https://softuni.bg/trainings/resources/video/13377/video-screen-13-march-2015-borislav-yordanov-creating-a-rest-api - Разработка на REST приложения чрез PHP и Symfony