FuelPHP - Controllori
Controllerssono responsabili della gestione di ogni richiesta che entra nell'applicazione FuelPHP. Secondo FuelPHP, i controller si trovano infuel/app/classes/controller/. Creiamo prima un Employee Controller.
dipendente.php
<?php
class Controller_Employee extends Controller {
public function action_home() {
echo "FuelPHP-Employee application!";
}
public function action_index() {
echo "This is the index method of employee controller";
}
}
Metodi del controller
I controller elaborano una richiesta web utilizzando uno dei suoi file action_ metodi. Possiamo creare tanti metodi action_ a seconda dei requisiti dell'applicazione. Il metodo action_ predefinito è action_index . Il metodo action_index può essere chiamato da uno qualsiasi dei seguenti URL.
http://localhost:8080/employee/index
http://localhost:8080/employee/
Risultato
Creiamo un nuovo actionmetodo, action_show nel nostroemployee applicazione.
<?php
class Controller_Employee extends Controller {
public function action_home() {
echo "FuelPHP-Employee application!";
}
public function action_index() {
echo "This is the index method of employee controller";
}
public function action_show() {
echo "This is the show method of employee controller";
}
}
Il metodo action_show può essere chiamato utilizzando il seguente URL.
http://localhost:8080/home/show
Risultato
metodo before ()
Possiamo creare un metodo, beforenel nostro controller. Questo metodo verrà eseguito prima di ogni chiamata di metodo action_ . Non verrà chiamato se quel metodo risulta inesistente. Questo metodo ci aiuta a scrivere azioni comuni come il controllo dell'accesso, il recupero dei dati predefinito, ecc.
Creiamo un metodo prima e stampiamo un semplice messaggio di testo.
public function before() {
echo "This message comes from <em>before()</em> method</br>";
}
Pagina indice con prima dell'azione
Mostra la pagina con prima dell'azione
metodo after ()
after() metodo è simile a before()metodo ma eseguito dopo la chiamata del metodo action_ . Il metodo after () accetta la risposta come input e restituisce l' oggetto risposta .
public function after($response) {
if ( ! $response instanceof Response) {
$response = \Response::forge($response, $this->response_status);
}
return $response;
}
Se l'ingresso è oggetto NULL o no risposta, quindi creare una nuova risposta oggetto utilizzando il metodo fucina di risposta e restituirlo. Impareremo in dettaglio la classe Response nei capitoli successivi.
Estensione dei controller
Possiamo estendere un controller da un altro controller. Di seguito è riportata la sintassi di base.
class Controller_Employee extends Controller_Welcome {
// controller methods
}
Questo aiuterà nella condivisione dei metodi.
Genera controller
Fuel ha la possibilità di generare il controller utilizzando il comando Oil. Di seguito è riportata la sintassi.
Sintassi
oil g controller <controller-name>
Esempio
oil g controller sample
Dopo aver eseguito il comando precedente, vedrai la seguente risposta.
Risultato
Creating view: /path/to/project/fuel/app/views/template.php
Creating view: /path/to/project/fuel/app/views/sample/index.php
Creating controller: /path/to/project/fuel/app/classes/controller/sample.php
Tipo di controller
FuelPHP fornisce diversi tipi di controller per vari scopi. Sono i seguenti:
- Controller di base
- Controller modello
- Controller di riposo
- Controller ibrido
Controller di base
Il controller è il controller di base per tutti i diversi tipi di controller disponibili in FuelPHP. Fornisce tutte le funzionalità di base necessarie per elaborare una richiesta web. Supporta richiesta, risposta, sessione, ecc. Lo useremo in tutti gli esempi se non diversamente specificato.
Controller modello
Un controller modello è un'estensione del controller di base. Ha il supporto per i modelli, metodi predefiniti before () e after (). Fondamentalmente, può essere utilizzato per racchiudere la tua vista in un layout con un'intestazione, un piè di pagina, una barra laterale, ecc. Per creare un controller di modello, dobbiamo estendere la classe Controller_Template . Per impostazione predefinita, tutti i metodi di una classe che estende Controller_Template devono utilizzare il modello.
È definito come segue.
class Controller_Employee extends Controller_Template {
public function action_index() {
// add methods
}
}
Discuteremo di più sul controller del modello nel capitolo Viste.
Rest Controller
Un controller di riposo è un'estensione del controller di base. Ha un supporto predefinito per la programmazione dell'API REST. Ciò ti consentirà di creare API con facilità.
Per creare un controller di riposo, è necessario estendere la classe Controller_Rest . È definito come segue.
class Controller_Employee extends Controller_Rest {
public function action_index() {
// add methods
}
}
Discuteremo di più sul controller di riposo nel capitolo Ajax.
Controller ibrido
Il controller ibrido esegue le funzionalità sia del controller REST che del controller Template in un singolo controller di base.