Уеб страница в Symfony framework се създава изключително лесно, само в няколко стъпки вие може да имате работеща страница, преди това обаче нека да направя няколко разяснения.
Какво е Symfony?
Symfony е full stack framework, което значи, че напълно оборудван и може да се използва за направата на почти всичко, за което човек може да се досети, от личен блог до корпоративен сайт или пък RESTful API. Symfony върви с доста добре описана документация, което му дава едно огромно преимущество пред повечето frameworks. По мое лично мнение към настоящия момент Symfony e една доста добра frameworks, за която човек спокойно може да отдели част от своето време и да я научи.
Какво ще ни е нужно?
- Инсталирано ново копие на Symfony 2.8 - тук искам да подчертая, че ако не укажете коя версия искате да инсталирате, и напишете в командния ред: „symfony new име_на_проект” ще се инсталира последната стабилна версия 3.1.x.. За да инсталирате 2.8 версия на Symfony e нужно да изпишете „ symfony new име_на_проект 2.8”.
- Подходяща среда за писане на код - например NetBeans или PHPStorm.
- Основни познания по структурата на настоящия framework - като цяло има само две директории, с които ще работим – аpp/ и scr/. Директорията scr/ съдържа всички php класове, които ще създадем, а директорията app/ съдържа всичко друго: конфигурацията и шаблонните файлове.
Преди да започнем
В примера по-долу ще използвам PHPStorm за среда за разработка, тъй като работя главно с него. Добре е преди да отворите проекта да имате инсталирани плъгини като PHP Annotations, Framework MVC structure support, Twig support и Symfony plugin. След като инсталираме нужните плъгини може да рестартираме приложението и да отворим новият проект. PHPStorm ще ни запита за “Source директорията”, трябва да окажем, че това е scr/, тъй като когато създаваме нов клас, ще може да ползваме автоматичен namespace в проекта. Последен action, който трябва да направим преди да започнем е да отидем в scr/AppBundle/Controller/ и да изтрием DefaultController.php. Toй идва по default със инсталацията на Symfony, както може би се досещате това рендерва началната страница, която ви приветства и ви съобщава, че сте инсталирали успешно Symfony. Kогато изтриете този контролер и пуснете сървъра през конзолата (server app/console server:run), отидете в браузъра и напишете http://127.0.0.1:8000 (localhost:8000), тогава ще получите това съобщение:
No route found for "GET /"
Идеално! По този начин Symfony ни казва "Хей! Тук няма такава страница." А сега нека се върнем към това как да си направим страница.
Изграждане на първата ни страница
- Създаване на контролер – отиваме във scr/AppBundle/Controller и създаваме нов контролер (php клас), който ще кръстим “MyfirstController”, тъй като сме оказали, че папката scr/ е source, в прозореца на новият клас ще видим, че имаме автоматично попълнен namespace „AppBundle/Controller”. Натискаме ОК и нашият нов контролер е създаден:
<?php
namespace AppBundle\Controller;
class MyfirstController
{
}
- Създаването на метод (Аction) в контролера е следващото нещо, което трябва да направим:
class MyfirstController
{
public function firstAction()
{
//някакъв код
}
Създадохме метод , сега трябва да напишем какво ще прави той. Между къдравите скоби ще поставим кода, който ще изпълнява. Единственото задължение на контролера е да върне обект. В случая обекта ще съдържа в себе си някакъв текст:
{
return new Response('<html><body>Tова е моята първа страница!</body></html>');
}
За да проработи нашият код, когато изписваме Response ще се появи меню, от което трябва да изберем Symfony\Component\HttpFoundation\Response. После ще забележим, че този път се е появил под namespace като “use Symfony\Component\HttpFoundation\Response;”. Това посочва, че нашият контролер ще използва класа Response за да осъществи отговора, на HTTP заявката.
Сега вече сме създали нашата страница, но как да я достъпим? На адрес http://127.0.0.1:8000 отново получаваме грешка „No route found for "GET /". Аха! Нямаме рутер, който да окаже къде е страницата, която търсим. Нека го създадем!
- Създаване на рутер – на кратко целта на рутерa (route) е да състави карта на URL адреса, изискван от контролера. Начините за създаването на рутер в Symfony са два: чрез въвеждане на информация във аpp/config/routing.yml или чрез анотация вътре в контролера. Аз харесвам повече анотацията и ще използвам нея.
class MyfirstController
{
/**
* @Route(“/first”)
*/
public function firstAction()
Когато въведете @Route ще ви се появи отново прозорец, от който трябва да изберете подходящия клас за routing, в случая това е “..\Bundle\FrameworkExtraBundle\Configuration\Route”, който отново се появява под namespace, като oказва кое точно route се използва. В скобите въведохме „/first”, което всъщност оказва, кой е URL пътя до този контролер.
Сега трябва да стартираме сървъра от конзолата, за да видим какво сме направили:
php app/console server:run
При успешен старт ще се появи съобщението „[OK] Server running on http://127.0.0.1:8000”.
Сега вече може да достъпим нашата новосъздадена страница на адрес: http://127.0.0.1:8000/first
Aко всичко е наред ще видите текста „Tова е моята първа страница!”
Toва е! Вече успяхте да създадете вашата първа страница на Symfony, в рамките на няколко реда код.