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.