Poradniki

Przegląd funkcji systemu i instalacja Symfony2

System Symfony został opracowany i wydany przez francuskie laboratorium Sensio Labs w 2011 r. Główne zadania tego frameworka PHP to tworzenie aplikacji i witryn internetowych. Jest to wireframe z różnymi narzędziami i metodami aplikacji do pracy z projektami. Zaletami systemu Symfony 2 wraz z jego analogami jest skala działania, szybkość i elastyczność systemu.

symfony_prestashop

Następnie zastanówmy się, jak szybko zainstalować framework Symfony i zacząć.

Instalacja

Korzystanie z instalatora z konsoli

> php -r "file_put_contents ('symfony', file_get_contents ('https://symfony.com/installer')); '

> php symfony nowy firstproj 2.8.6

firstproj – nazwa projektu, folder, w którym zostanie wdrożony

2.8.6 – określona przez nas wersja, która zostanie zainstalowana

Możesz pobrać archiwum i rozpakować je, będzie to to samo, co tworzenie nowego projektu o nazwie symfony

https://symfony.com/download?v=Symfony_Standard_Vendors_2.8.6.zip

Prestashop używa symfony2, aktualna i obsługiwana wersja to 2.8.6

foldery w projekcie:

firstproj

| -app                główna aplikacja projektu

| —Cache           cache folder

| —Skonfiguruj           konfiguracje dla całego projektu

| —Logi              dzienników

| –Zasoby    zasobów – kontrolery, widoki, modele

| -bin    

| -src              folder z pakietami  

| -vendor           folder z dostawcami, głównymi komponentami Symphony

| -web                          folder publiczny, jest widoczny po uzyskaniu dostępu przez przeglądarkę

Punkt wejścia dla wszystkich wniosków:

firstproj / web / app.php                          – produkcja

firstproj / web / app_dev.php     – do programowania

Różnica ustawień

Cała aplikacja składa się z pakietów i wszystkich symfonii.

Pakiety są połączone z app / AppKernel.php

AppKernel :: registerBundles ()

new Vulk \ MyBundle \ VulkMyBundle ();

Pakiety są przechowywane w src / VendorBundle / BundleName / VendorBundleBundleName.php

na przykład Vulk \ MyBundle \ VulkMyBundle.php

i rozszerz klasę pakietu

klasa VulkMyBundle rozszerza Bundle
{
    ...
}

Wszystkie klasy są wciśnięte w ich przestrzenie nazw, na przykład:

przestrzeń nazw Vulk \ MyBundle

Przestrzeń nazw musi być zgodna ze ścieżką do pliku z naszą klasą względem folderu src. Jest to konieczne, aby auto-loader klas mógł je znaleźć.

Klasa znajduje się w pliku

firstproj / src / Vulk / MyBundle / VulkMyBundle.php

jego przestrzeń nazw Vulk \ MyBundle

Wytyczanie

Których kontrolerów iz jakich pakietów użyć do przetworzenia żądania? Globalny routing dla całej aplikacji w pliku:

firstproj / app / config / routing.yml

domyślnie tak jest

aplikacja:

            zasób: „@ AppBundle / Controller /”

            typ: adnotacja

dla wszystkich żądań używany jest pakiet utworzony domyślnie podczas instalacji Symphony – AppBundle .

typ: adnotacja – oznacza, że ​​informacje o routingu będą pobierane z adnotacji – komentarze bezpośrednio w kodzie kontrolera. To wygląda tak:

            / **

            * @Route ("/", nazwa = "strona główna")

            * /

            public function indexAction (Request $ request)

            {

            ...

            }

„/” To trasa

name = “strona główna” to nazwa trasy

Te same dane mogą być przesyłane w formacie yml, xml, php. Yml jest najczęściej używany w Symphony.

Aby dodać swój pakiet do routingu, dodaj go do firstproj / app / config / routing.yml

vulk_my:

            zasób: "@ VulkMyBundle / Resources / config / routing.yml"

            przedrostek: / vulk

prefiks: / vulk – oznacza, że ​​wszystkie żądania / vulk / ***** będą adresowane w pakiecie VulkMyBundle

Trasowanie w pakiecie jest określone w pliku firstproj / src / Vulk / MyBundle / Resources / config / routing.yml

vulk_my_homepage:

            ścieżka: /

            domyślne: {_controller: VulkMyBundle: Default: index}

vulk_my_page:

            ścieżka: / strona

            domyślne: {_controller: VulkMyBundle: Default: page}

vulk_my_slug:

            ścieżka: / strona / {slug}

            defaults: {_controller: VulkMyBundle: Default: slug, page: "start"}

ścieżka:   – co przetwarzamy?

domyślne: – jak i przy pomocy jakich parametrów przetwarzamy

_controller – nazwa kontrolera jest przesyłana w formacie Nazwa pakietu: Nazwa kontrolera: ActionName

Kontrolery

Plik z kontrolerem ma przyrostek Kontroler, leży

firstproj / src / Vulk / MyBundle / Controller / DefaultController.php

przestrzeń nazw Vulk \ MyBundle \ Controller

klasa Domyślny kontroler rozszerza kontroler

{
indeks 
            funkcji publicznej Action ()

            {

            return $ this-> render ('VulkMyBundle: Default: index.html.twig');

            }
strona 
            funkcji publicznej Action ()

            {

            return $ this-> render ('VulkMyBundle: Default: page.html.twig');

            }
            public function slug Action ($ slug)

            {
    ...
            }
}

Akcja to metoda z przyrostkiem Akcja. Parametry tej metody mają taką samą nazwę, jak zdefiniowaliśmy w pliku routingu w ścieżce i wartościach domyślnych. Kolejność parametrów nie jest ważna.

Wyświetlenia

Widoki znajdują się w folderze

firstproj / src / Vulk / MyBundle / Resources / views / Default / index.html.twig

Domyślnie jest to kontroler, dla którego ten szablon jest potrzebny.

Indeks jest działaniem tego kontrolera

Wiersz poleceń

Aby nie tworzyć wszystkich tych plików ręcznie, możesz użyć generatora pakietów (analog generatorów modeli w pwdevelover)

W wierszu poleceń

> generowanie aplikacji / konsoli php: pakiet

Pyta o nazwę pakietu, kontrolera i sposób przechowywania ustawień, tworzy wszystkie pliki, określa przestrzenie nazw

Zobacz wszystkie zarejestrowane trasy

> Debugowanie aplikacji / konsoli php: router

Opróżnij pamięć podręczną

> pamięć podręczna aplikacji / konsoli php: wyczyść

Generowanie encji / modelu ORM

> php app / console doktryna: generuj: jednostka

Podczas tego procesu pyta o nazwę bytu i jakie cechy powinien on mieć. Generuje klasę i tworzy metody setPropertyName i getPropertyName do pisania i odczytywania każdej właściwości.

Aktualizacja struktury bazy danych

> doktryna aplikacji / konsoli php: schemat: aktualizacja --force

Pobiera wszystkie istniejące ORM i tworzy / aktualizuje dla nich strukturę bazy danych.

Pracuj z ORM

Tworzenie i zapisywanie w bazie danych

    $ produkt = nowy produkt ();
    $ product-> setName („A Foo Bar”);
    $ product-> setPrice ('19 .99 ');

    $ em = $ this-> getDoctrine () -> getManager ();

    $ em-> persist ($ product);
    $ em-> flush ();

Dostanie się z DB

   $ produkt = $ this-> getDoctrine ()

            -> getRepository ('VulkMyBundle: Produkt')

            -> znajdź ($ id);

Repozytorium obiektów ORM

$ repository = $ this-> getDoctrine ()

            -> getRepository ('VulkMyBundle: Produkt');

Wyszukiwanie kolumnowe

$ produkt = $ repozytorium-> findOneBy Name ('foo');

Wyszukiwanie w wielu kolumnach

$ product = $ repository-> findOneBy (

            tablica („nazwa” => „foo”, „cena” => 19,99)

);

Żądanie do DB

$ em = $ this-> getDoctrine () -> getManager ();

$ query = $ em-> createQuery (

            „WYBIERZ s

            Z AppBundle: Produkt str

            GDZIE p. Cena>: cena

            ZAMÓWIENIE WEDŁUG ceny ASC '

) -> setParameter ('price', '19 .99 ');

$ products = $ query-> getResult ();

$ produkty to tablica obiektów ORM

0 Komentarze
Udostępnij

Prestashop Developer