Tworzenie kontrolera
Tworzenie kontrolera
Nasz projekt księgi gości jest jużdostępny na serwerach produkcyjnych,啤酒trochęoszukiwaliśmy。Projekt聂posiada jeszczeżadnych podstron。咱stronęgłownąsłuży nudny błąd 404。Naprawmy。
Kiedy przychodziżądanie HTTP、np。国防后勤局strony głownej (http://localhost: 8000 /
),Sob娱乐下载ymfony probuje znaleźćtrasę(ang。路线),ktora pasuje做ścieżki zapytania(tutaj/
)。Trasajestłącznikiem pomiędzyścieżkązapytania我wywoływaczem PHP(ang。PHP调用),funkcjąktora tworzyodpowiedź国防后勤局迪高żądania HTTP。
Te wywoływacze (ang。可调用)nazywane są“kontrolerami”。W ob娱乐下载Symfony większośćkontrolerow jest zaimplementowana jako klasy PHP。Możesz stworzyćtakąklasęręcznie,啤酒ponieważlubimy działaćszybko, zobaczmy,木菠萝Symfony moob娱乐下载że南pomoc。
Lenistwo zawdzięczane制造商包
我偿wygodnie szybko wygenerowaćkontrolery, możemy skorzystaćz pakietuob娱乐下载symfony / maker-bundle
,ktory zostałzainstalowany, jako częśćpaczkiwebapp
。
制造商包pomaga wygenerowaćwiele rożnych建议。Będziemy去używaćw tej książce cały czas。Każdy“发电机”jest definiowany w poleceniu我wszystkie polecenia należą做przestrzeni nazw使
。
Wbudowane w ob娱乐下载polecenie Symfony控制台列表
zawiera listęwszystkich poleceńdostępnych w danej przestrzeni nazw;użyj去赎odkryćwszystkie generatory dostarczone przez制造商包:
1
美元ob娱乐下载symfony控制台使列表
Wybieranie formatu konfiguracji
Przed stworzeniem pierwszego kontrolera w projekcie musimy wybrać格式konfiguracyjny ktory chcemy wykorzystać。ob娱乐下载Symfony obsługuje YAML、XML、PHP我atrybuty PHP od新法提案instalacji。
做konfiguracji pakietownajlepszym wyborem开玩笑YAML。Pliki konfiguracyjne znajdująsięw katalogu配置/
。Często, gdy instalujesz nowy pakiet, przepis pakietu (ang。配方)podczas procesu instalacyjnego doda w tym katalogu nowy plik kończący sięrozszerzeniem.yaml
。
W przypadkukonfiguracji kodu PHPatrybutysąlepszym wyborem, ponieważsądefiniowane w ramach kodu。Pozwol,że wyjaśnięna przykładzie。Kiedy przychodziżądanie, konfiguracja musi powiedziećSyob娱乐下载mfony,żeścieżkażądania powinna byćobsługiwana przez określony kontroler (klasa PHP)。W przypadku korzystania z formatow konfiguracyjnych YAML、XML滑PHP、potrzebne sądwa pliki (plik konfiguracyjny我plik kontrolera PHP)。W przypadku korzystania z atrybutow konfiguracja odbywa siębezpośrednio W klasie kontrolera。
Możesz sięzastanawiać,木菠萝odgadnąćnazwępakietu wymaganego przez戴恩rozszerzenie吗?聂musisz jej znaćgdyż- w większości przypadkow——Symfonyob娱乐下载 zawiera nazwęniezbędnego pakietu w komunikatach o błędach。Na przykład uruchamianieob娱乐下载symfony控制台:消息
鹿角的第二叉pakietu信使
zakończyłoby sięwyjątkiem zawierającym podpowiedźo potrzebie zainstalowania właściwego pakietu。
Generowanie kontrolera
Utworz swoj pierwszykontroler咱pomocąpolecenia:控制器
:
1
美元ob娱乐下载ConferenceController symfony控制台:控制器
Polecenie tworzy klasęConferenceController
w katalogusrc /控制器/
。Wygenerowana klasa zawiera gotowy kod, ktory możesz modyfikować:
Atrybut#(路线(“/会议”,名字:“会议”))
jest tym, czyni metodęindex ()
kontrolerem (konfiguracja znajduje sięnad kodem, ktory konfiguruje)。
阿宝wejściu na这条:/会议
w przeglądarce kontroler jest wykonywany, odpowiedźzwracana。
Dostosuj trasę(ang。路线),赎kierowała做strony głownej:
1 2 3 4 5 6 7 8 9 10 11
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ 8 7 + 8 7 @@使用Symob娱乐下载fony \组件\路由\注释\路线;类ConferenceController延伸AbstractController {- #[路线(“/会议”,名字:“会议”))+ #[路线(“/”,名字:“主页”))公共函数指数():响应{返回$ this - >渲染(会议/ index . html。嫩枝”,(
Parametr nazwy trasy (ang。路线)的名字
——będzie przydatny, gdy chcemy odnieśćsię做strony głownej w kodzie。Zamiast kodowaniaścieżki/
na sztywno, użyjemy nazwy trasy。
Zamiast domyślnie renderowanej strony, zwroćmy prostąstronęHTML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ -11 8 + 11 13 @@类ConferenceController延伸AbstractController #(路线(“/”,名字:“主页”)]公共函数指数():反应{-返回$ this - >渲染(会议/ index . html。嫩枝”,(——“controller_name”= >“ConferenceController”,-]);+新响应(< < <返回EOF+ < html >+ <身体>+ < img src = " /图片/在建。gif " / >身体+ < / >+ < / html >+ EOF+);}}
Odświeżprzeglądarkę:
Głownym zadaniem kontrolera jest zwrocenieodpowiedzi
HTTP国防后勤局żądania。
Ponieważreszta rozdziału dotyczy kodu, ktorego聂zachowamy, zatwierdźmy teraz nasze zmiany:
1 2
美元git添加。美元git commit - m“添加索引控制器”
Dodawanie复活节Egga
偿zademonstrowaćw jaki sposob odpowiedźmoże wykorzystaćinformacje zżądania dodajmy małego复活节egga。Ilekroćstrona głowna zawierałańcuch zapytań(ang。查询字符串)塔基•木菠萝:你好=法比安
,dodajmy tekst,赎powitaćosobę:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27日28
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php24 @@ @@ 3、17 + 3名称空间的应用程序\控制器;控制器使ob娱乐下载用Symfony \包\ FrameworkBundle \ \ AbstractController;+使用Syob娱乐下载mfony \ HttpFoundation \ \组件请求;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\路由\注释\路线;类ConferenceController延伸AbstractController{#[路线(“/”,名字:“主页”))公共函数指数():反应+公共函数指数(请求请求美元):反应{+ $迎接=”;+如果($ name = $请求- >查询- >获取('你好')){+ $迎接= sprintf (“< h1 > % s你好!< / h1 >”, htmlspecialchars函数(名字)美元);+}+新的响应(< < <返回EOF < html > <身体>+ $问候< img src = " /图片/在建。gif " / > < /身体> < / html >
ob娱乐下载Symfony udostępnia戴恩żądania poprzez obiekt请求
。Kiedy kontrolera z typem widzi论点请求
automatycznie体育运动,jaki obiekt przekazać。Może zostaćwykorzystany,赎pobrać元素的名字
złańcucha zapytań我dodaćtytuł<标题>
。
Otworz w przeglądarce这/
一个następnie/ ?你好=法比安
我zobacz rożnice
请注意
Zwroćuwagęna wywołanie funkcjihtmlspecialchars函数()
XSS, dzięki czemu unikniemy problemow związanych z。Jest operacja, ktora zostanie国防后勤局nas wykonana automatycznie阿宝przełączeniu sięna odpowiedni silnik szablonow。
Mogliśmy rownieżuczynićz nazwy częśćadresu URL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ 9日11 + 9,11 @@使用Symob娱乐下载fony \组件\路由\注释\路线;类ConferenceController延伸AbstractController {- #[路线(“/”,名字:“主页”))公共函数指数(请求美元请求):反应+ #[路线(“/ hello /{名称}”,名字:“主页”))+公共函数指数(string name = "):美元的回应{$ = "打招呼;——如果($ name = $请求- >查询- >获取('你好')){+如果(美元的名字){$迎接= sprintf (“< h1 > % s你好!< / h1 >”, htmlspecialchars函数(名字)美元);}
Część{名称}
jest dynamicznymparametrem trasy(ang。线路参数)——działa木菠萝象征wieloznaczny (ang。通配符)。Możesz teraz odwiedzić/ hello /法比安
w przeglądarce,赎uzyskaćtakie相同wyniki木菠萝poprzednio。Wartość{名称}
parametru można uzyskaćpoprzez dodanie argumentu kontrolera o tej samej nazwie -美元的名字
。
Cofnij zmiany, ktore właśnie wprowadziliśmy:
1
美元git checkout src /控制器/ ConferenceController.php
1 2
美元src /控制器/ ConferenceController.php git重置头美元git checkout src /控制器/ ConferenceController.php
Debugowanie zmiennych
Świetnym narzędziem debugowania jest funkcja ob娱乐下载Symfonydump ()
。Jest zawsze dostępna我pozwala zrzucaćzmienne władnym我interaktywnym formacie。
Zmieńna chwilęsrc /控制器/ ConferenceController.php
,赎zrzucićobiekt请求:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php17 @@ @@ 3 14 + 3名称空间的应用程序\控制器;控制器使ob娱乐下载用Symfony \包\ FrameworkBundle \ \ AbstractController;+使用Syob娱乐下载mfony \ HttpFoundation \ \组件请求;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\路由\注释\路线;类ConferenceController延伸AbstractController{#[路线(“/”,名字:“主页”))公共函数指数():反应+公共函数指数(请求请求美元):反应{美元+转储(请求);+新的响应(< < <返回EOF < html > <身体>
Podczas odświeżania strony, zwroćuwagęna nowąikonę„celu“na pasku narzędzi;pozwala ona sprawdzićzmienne, ktory debugujesz。Kliknij ją,赎uzyskaćdostęp做pełnej strony, na ktorej nawigacja jest prostsza:
Cofnij zmiany, ktore właśnie wprowadziliśmy:
1
美元git checkout src /控制器/ ConferenceController.php
1 2
美元src /控制器/ ConferenceController.php git重置头美元git checkout src /控制器/ ConferenceController.php
Idąc dalej
- 系统trasowaniaob娱乐下载Symfony;
- Samouczek ob娱乐下载SymfonyCasts:路由、kontrolery我strony;
- Atrybuty w PHP;
- KomponentHttpFoundation;
- AtakiXSS(跨站点脚本);
- Ściągawka ob娱乐下载Symfony路由。