Loading...
mx_starter avatar mx_starter 2 Точки

Symfony и Single-page уеб приложения

Дали е възможно в някоя от следващите лекции да се представи накратко какъв би следвало да е подхода при изграждане на single-page приложения, в които да участва Symfony/Laravel или подобни.

По-специално ме интересува:

  • Има ли въобще смисъл (ако изключим backend частта им)?
  • В основата на Symfony е рутинга - как се връзва с SPA подхода, при който такъв практически липсва?
  • Доста от популярните JS frameworks - KendoUI, ExtJS, Webix, идват със собствени развити компоненти за изграждане на форми - как/дали техните форми могат да се интегрират с form-функционалностите на Symfony? Например - във втората лекция видяхме как с една команда от конзолата Symfony генерира CRUD ресурси, вкл. форми - но какво правим ако искаме тези форми да идват от JS библиотека?

Опитвам се да схвана как Symfony би ми била полезна и как бих могъл да я ползвам в SPA проектите си, но от всичко разбрано досега - намирам приложение единствено за backend частта - модели, Doctrine. Не и за формите и рутинга. Едно пояснение в лекцията според мен ще е от полза на всички

Тагове:
0
Symfony
RoYaL avatar RoYaL Trainer 6849 Точки

Symfony (Laravel, Spring, ASP.NET, Express.js, Rails,  etc...) не са frontend frameworks (каквито са Angular, React, Vue, etc...), така че ако изключим backend частта, то на практика няма да ти е полезен въобще за SPA, а по-скоро ще ти пречи.

По-скоро ще ти е полезен да направиш API-то, което ще консумира клиента.

P.S.: Концептуално грешно е, че липсва routing при SPA приложенията. Такъв трябва да има, но е клиентски отново. Ако няма, губиш възможността човек да може да навигира напред/назад по страницата и да изпраща URL-и на приятели до определен ресурс

2
mx_starter avatar mx_starter 2 Точки

Разбирам, вкл. и частта в P.S.

В такъв случай, може би ще е полезно да се демонстрира как да ползваме САМО ЧАСТ от бъндълите на Symfony в подобни приложения - доколкото разбрах това е възможно. Но чисто технически - би било полезно да се покаже как става, особено пък ако трябва symfony да се интегрира в готов проект. Например - представете си че имаме готово работещо приложение, при което комуникацията с базата данни и обработката на обектите в бекенда е направена по старомоден начин и искаме да се възползваме от Doctrine/Entity благините на Symfony за да сме в крак с времето.

Откъде въобще да започнем, инсталация, файлова структура? :)

0
RoYaL avatar RoYaL Trainer 6849 Точки

Компонентите са библиотеки, които се намират в повечето инструменти за разрешаване на зависимости, като 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)).

0
01/06/2017 11:51:12
mx_starter avatar mx_starter 2 Точки

ОК, ако примерно имам готово написано приложение - но то няма нищо общо с файловата структура на едно Symfony приложение, какво ще се случи при инсталация с Composer на Symfony компонент, Routing-а например? Ще се създадат ли папки от рода на app, vendor и т.н. - и няма ли да се намажат с евентуално съществуващите такива?

0
RoYaL avatar RoYaL Trainer 6849 Точки

Не ти трябват тези папки, за да ползваш маршрутизиращия компонент на 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 минути да видиш какво ще се получи, ако в готов проект (ако щеш тестов готов проект, в който има два файла само) се опиташ да дръпнеш този или онзи компонент.

0
mx_starter avatar mx_starter 2 Точки

Мерси за информацията!

0
plamen911 avatar plamen911 80 Точки

Може да видиш тук 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

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.