La creazione di un controller
La creazione di un controller
Il nostro progetto del留言簿è già attivo sui server di producduzione, ma abbiamo imbrogliato un po'。Il progetto non ha ancora nessuna pagina。主页错误404。Sistemiamo le cose。
Quando arriva una richiesta HTTP come per la主页(http://localhost:8000/
), ob娱乐下载Symfony cerca di trovare una机械的Che corrisponda alPercorso Della richiesta(/
在questo caso)。Una机械的è il colleamento tra il percorso Della richhiesta e una funzione可调用di PHPChe crea larispostaHTTP per quella richiesta。
Queste funzioni“可调用”sono chiamate“控制器”。在Syob娱乐下载mfony中,la maggior parte dei控制器è implementata来类PHP。Possiamo creare una classe di questo tipo in modo manuale ma, siccome ci piace andare veloci, vediamo come ob娱乐下载Symfony ci può aiutare。
Essere pigri con MakerBundle
Per generare dei controller senza sforzo, possiamo usare il packetob娱乐下载symfony / maker-bundle
, il quale è statto installato come parte del pacchettowebapp
.
MakerBundle ci aiuta a generare un sacco di classi diverse。Lo useremo molto spesso在questo libro。Ogni "generatore" è定义在uncomando e tutti i comandi fanno partte del namespace dei comandi使
.
Il第一列表
della console di ob娱乐下载Symfony elenca tutti i comandi disponibili sotto un dato命名空间;possiamo usarlo per scoprire tutti i generatori forniti da MakerBundle:
1
$ob娱乐下载Symfony控制台列表制作
没有固定的结构
最重要的,最重要的,最重要的,最重要的,最重要的,最重要的,最重要的,最重要的,最重要的,最重要的,最重要的,最重要的,最重要的,最重要的。ob娱乐下载Symfony支持原生YAML, XML, PHP和' Attributi PHP '。
每拉Configurazione relativa ai pacchetti,YAMLè la scelta migliore。Questo è il formato utizzato per la cartella配置/
.Spesso, quando si installa un nuovo pacchetto, la ricetta del pacchetetto stesso aggiungerà un nuovo file con estensione.yaml
一个卡特尔。
每拉配置相对代码PHP, gliattributiSono una scelta migliore poiché Sono definitely nel codice stesso。Prendiamo in esempio: quando una richiesta arriva all'applicazione, la configurazione deve dire a Symfony qualaob娱乐下载le specifico controller (una class PHP) dovrà gestirla。Se utilizzassimo un formato di configurazione tra YAML, XML e PHP, due file sarebbero coinvolti (il file di configurazione e il file del controller PHP)。utilzzando gli attribute, la configurazione sarà inclusa direttamente nella class del controller。
Come fare a sapere il nome del packet che ci serve安装per una determinata funzionalità?Il più delle volte non c'è bisogno di saperlo, infatti ob娱乐下载Symfony ci dirà Il nome del pacchetto da installare atttraverso dei message aggi d'error。突击队的战士ob娱乐下载Symfony控制台make:message
Senza aver installato il packetto信使
, per esempio, avrebbe sollevato un'eccezione contentente un suggimento riguardo a cosa installare。
通用un控制器
Creiamo il nostro primo控制器Tramite il comando:控制器
:
1
$ob娱乐下载symfony控制台make:controller ConferenceController
我是一个天才ConferenceController
所以nella cartellasrc /控制器/
.La class generata sarà composta da codice predefinito e pronto per essere messo a punto:
L 'attributo#[路由('/conference',名称:'conference')]
è ciò我与你同在index ()
联合国控制器(la configurazione è assieme al codice che configurura)。
再见/会议
Nel浏览器,我的控制器,我的浏览器,我的控制器。
真主安拉主页:
1 2 3 4 5 6 7 8 9 10 11
——/ src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ -8,7 +8,7使用Symfonob娱乐下载y\组件\路由\注释\路由;AbstractController类- #[路由('/conference',名称:'app_conference')]+ #[路由('/',名称:'主页')]公共函数index(): Response {return $this->render('conference/index.html. html. html. html. html)嫩枝”,(
Il parametro的名字
Della rotta sarà实用qualora volessimo fare riferimento真主安拉主页所有'interno del codice。请求我宽恕我的过失/
Potremo utilzzare il Nome Della rotta。
在这里,我们要把所有的东西都归还给你HTML:
12 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 @@ class ConferenceController extends AbstractController #[路由('/',名称:'主页')]公共函数索引():Response {-返回$this->render('conference/index.html. html. render('conference/index.html. html)嫩枝”,(- 'controller_name' => 'ConferenceController',-]);+返回新的响应(<<+ < html >身体+ < >+ 身体+ < / >+ < / html >+ EOF+);}}
Aggiorniamo il浏览器:
La responsabilità principale di un controller è quella di restituire una响应
HTTP per la richesta。
Siccome la rimanente parte del capitolo riguarda codice che non vorremo memorizzare, facciamo commit dei cambiamenti ora
1 2
$Git添加。$Git提交-m“添加索引控制器”
“复活节彩蛋”
每一缕缕缕缕缕缕缕缕缕缕复活节彩蛋(contenuto nascosto)。Ogni volta che la主页连续una查询字符串来你好=法比安
,我对你的人格充满敬意:
12 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.php@@ -3,17 +3,24 @@名称空间的应用程序\控制器;控制器使ob娱乐下载用Symfony \包\ FrameworkBundle \ \ AbstractController;+使用Syob娱乐下载mfony \ HttpFoundation \ \组件请求;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\路由\注释\路线;类ConferenceController扩展AbstractController{#[路由('/',名称:'主页')]—public function index():表示响应+公共函数索引(Request $ Request):响应{+ $greet = ";+ if ($name = $request->query->get('hello')) {+ $greet = sprintf('Hello %s!< / h1 >”,htmlspecialchars函数(名字)美元);
+}+返回新的响应(<< . txt+ $问候