Как да създадем уеб страница със Symfony 2 framework?

+7 гласа
125 прегледа
попитан 2016 юни 16 в PHP от Veronika.Georgieva. (1,460 точки)
Започнах да чета книгата за Symfony 2, първоначално ми се видя изключително лесно. Но когато тръгнах да упражнявам наученото нещо не успя да се получи. Искам да разбера основното: как се създава уеб страница в Symfony 2, тоест какви са точните стъпки това да се случи.

1 отговор

+1 глас
отговорени 2016 юни 16 от Deyan Delev (1,810 точки)
редактиран 2016 юни 16 от Deyan Delev

Уеб страница в Symfony framework се създава изключително лесно, само в няколко стъпки вие може да имате работеща страница, преди това обаче нека да направя няколко разяснения.

Какво е Symfony?

Symfony е full stack framework, което значи, че напълно оборудван и може да се използва за направата на почти всичко, за което човек може да се досети, от личен блог до корпоративен сайт или пък RESTful API. Symfony върви с доста добре описана документация, което му дава едно огромно преимущество пред повечето frameworks. По мое лично мнение към настоящия момент Symfony e една доста добра frameworks, за която човек спокойно може да отдели част от своето време и да я научи.

Какво ще ни е нужно?

  1. Инсталирано ново копие на Symfony 2.8 - тук искам да подчертая, че ако не укажете коя версия искате да инсталирате, и напишете в командния ред: „symfony new име_на_проект” ще се инсталира последната стабилна версия 3.1.x.. За да инсталирате 2.8 версия на Symfony e нужно да изпишете „ symfony new име_на_проект 2.8”.
  2. Подходяща среда за писане на код - например NetBeans или PHPStorm.
  3. Основни познания по структурата на настоящия 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, в рамките на няколко реда код.

...