CodeIgniter - Concetti di base
Controller
Un controller è un semplice file di classe. Come suggerisce il nome, controlla l'intera applicazione tramite URI.
Creazione di un controller
Per prima cosa, vai a application/controllerscartella. Lì troverai due file,index.html e Welcome.php. Questi file vengono forniti con CodeIgniter.
Conserva questi file così come sono. Crea un nuovo file con lo stesso percorso denominato "Test.php". Scrivi il seguente codice in quel file -
<?php
class Test extends CI_Controller {
public function index() {
echo "Hello World!";
}
}
?>
Il Test class estende una classe incorporata chiamata CI_Controller. Questa classe deve essere estesa ogni volta che si desidera creare la propria classe Controller.
Chiamare un controller
Il controller di cui sopra può essere chiamato tramite URI come segue:
http://www.your-domain.com/index.php/test
Notare la parola "test"Nell'URI sopra dopo index.php. Indica il nome della classe del controller. Poiché abbiamo dato il nome del responsabile del trattamento "Test", stiamo scrivendo "test"Dopo index.php. Il nome della classe deve iniziare conuppercase letter ma dobbiamo scrivere lowercase letterquando chiamiamo quel controller tramite URI. La sintassi generale per chiamare il controller è la seguente:
http://www.your-domain.com/index.php/controller/method-name
Creazione e chiamata del metodo del costruttore
Modifichiamo la classe precedente e creiamo un altro metodo chiamato "hello".
<?php
class Test extends CI_Controller {
public function index() {
echo "This is default function.";
}
public function hello() {
echo "This is hello function.";
}
}
?>
Possiamo eseguire il controller di cui sopra nei seguenti tre modi:
- http://www.your-domain.com/index.php/test
- http://www.your-domain.com/index.php/test/index
- http://www.your-domain.com/index.php/test/hello
Dopo aver visitato il primo URI nel browser, otteniamo l'output come mostrato nell'immagine sotto. Come puoi vedere, abbiamo ottenuto l'output del metodo "index", Anche se non abbiamo passato il nome del metodo all'URI. Abbiamo utilizzato solo il nome del controller nell'URI. In tali situazioni, CodeIgniter chiama il metodo predefinito "index".
Visitando il secondo URI nel browser, otteniamo lo stesso output mostrato nell'immagine sopra. Qui, abbiamo passato il nome del metodo dopo il nome del controller nell'URI. Poiché il nome del metodo è "index", Stiamo ottenendo lo stesso output.
Visitando il terzo URI nel browser, otteniamo l'output come mostrato nell'immagine sotto riportata. Come puoi vedere, stiamo ottenendo l'output del metodo "hello"Perché abbiamo superato"hello"Come nome del metodo, dopo il nome del controller"test"Nell'URI.
Punti da ricordare
Il nome della classe controller deve iniziare con una lettera maiuscola.
Il controller deve essere chiamato con la lettera minuscola.
Non utilizzare lo stesso nome del metodo della classe genitore, poiché sovrascriverà la funzionalità della classe genitore.
Visualizzazioni
Questa può essere una pagina web semplice o complessa, che può essere chiamata dal controller. La pagina web può contenere intestazione, piè di pagina, barra laterale ecc. La vista non può essere chiamata direttamente. Creiamo una vista semplice. Crea un nuovo file sottoapplication/views con nome "test.php"E copia il codice indicato di seguito in quel file.
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter View Example</title>
</head>
<body>
CodeIgniter View Example
</body>
</html>
Cambia il codice di application/controllers/test.php file come mostrato di seguito.
Caricamento della vista
La vista può essere caricata con la seguente sintassi:
$this->load->view('name');
Dove nome è il file di visualizzazione, di cui viene eseguito il rendering. Se hai pianificato di memorizzare il file di visualizzazione in una directory, puoi utilizzare la seguente sintassi:
$this->load->view('directory-name/name');
Non è necessario specificare l'estensione come php, a meno che non venga utilizzato qualcosa di diverso da .php.
Il metodo index () chiama il metodo view e passa il "test" come argomento al metodo view () perché abbiamo memorizzato la codifica html in "test.php"File in application/views/test.php.
<?php
class Test extends CI_Controller {
public function index() {
$this->load->view('test');
}
}
?>
Ecco l'output del codice sopra -
Il seguente diagramma di flusso illustra come funziona tutto:
Modelli
Le classi dei modelli sono progettate per funzionare con le informazioni nel database. Ad esempio, se si utilizza CodeIgniter per gestire gli utenti nella propria applicazione, è necessario disporre di una classe modello, che contiene funzioni per inserire, eliminare, aggiornare e recuperare i dati degli utenti.
Creazione della classe del modello
Le classi del modello sono archiviate in application/modelsdirectory. Il codice seguente mostra come creare una classe modello in CodeIgniter.
<?php
Class Model_name extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
Dove Model_name è il nome della classe del modello che si desidera fornire. Ogni classe del modello deve ereditare la classe CI_Model di CodeIgniter. La prima lettera della classe del modello deve essere in maiuscolo. Di seguito è riportato il codice per la classe del modello degli utenti.
<?php
Class User_model extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
La classe del modello sopra deve essere salvata come User_model.php. Il nome della classe e il nome del file devono essere gli stessi.
Caricamento del modello
Il modello può essere richiamato nel controller. Il codice seguente può essere utilizzato per caricare qualsiasi modello.
$this->load->model('model_name');
Dove model_name è il nome del modello da caricare. Dopo aver caricato il modello puoi semplicemente chiamare il suo metodo come mostrato di seguito.
$this->model_name->method();
Modelli a caricamento automatico
Potrebbero esserci situazioni in cui desideri una classe modello in tutta l'applicazione. In tali situazioni, è meglio caricarlo automaticamente.
/*
| ---------------------------------------------------------------
| Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
| $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|
| $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();
Come mostrato nella figura sopra, passare il nome del modello nell'array che si desidera caricare automaticamente e verrà caricato automaticamente, mentre il sistema è in stato di inizializzazione ed è accessibile tramite l'applicazione.
Aiutanti
Come suggerisce il nome, ti aiuterà a costruire il tuo sistema. È diviso in piccole funzioni per servire diverse funzionalità. In CodeIgniter sono disponibili numerosi helper, elencati nella tabella seguente. Possiamo anche costruire i nostri aiutanti.
Gli helper vengono generalmente memorizzati nel file system/helpers, o application/helpers directory. Gli helper personalizzati vengono archiviati inapplication/helpers directory e gli helper di sistema sono archiviati in system/helpersdirectory. CodeIgniter cercherà per primo nel tuo fileapplication/helpers directory. Se la directory non esiste o l'helper specificato non si trova, CodeIgniter cercherà invece nel tuo file globalesystem/helpers/ directory. Ogni helper, sia personalizzato che di sistema, deve essere caricato prima di utilizzarlo.
SN | Nome e descrizione dell'assistente |
---|---|
1 | Array Helper Il file Array Helper contiene funzioni che aiutano a lavorare con gli array. |
2 | CAPTCHA Helper Il file CAPTCHA Helper contiene funzioni che aiutano nella creazione di immagini CAPTCHA. |
3 | Cookie Helper Il file Cookie Helper contiene funzioni che aiutano a lavorare con i cookie. |
4 | Date Helper Il file Date Helper contiene funzioni che ti aiutano a lavorare con le date. |
5 | Directory Helper Il file Directory Helper contiene funzioni che aiutano a lavorare con le directory. |
6 | Download Helper Download Helper ti consente di scaricare i dati sul desktop. |
7 | Email Helper Email Helper fornisce alcune funzioni di assistenza per lavorare con la posta elettronica. Per una soluzione di posta elettronica più solida, vedere Classe di posta elettronica di CodeIgniter. |
8 | File Helper Il file File Helper contiene funzioni che aiutano a lavorare con i file. |
9 | Form Helper Il file Form Helper contiene funzioni che aiutano a lavorare con i moduli. |
10 | HTML Helper Il file Helper HTML contiene funzioni che aiutano a lavorare con HTML. |
11 | Inflector Helper Il file Inflector Helper contiene funzioni che ti permettono di cambiare le parole in plurale, singolare, camel case, ecc. |
12 | Language Helper Il file Language Helper contiene funzioni che aiutano a lavorare con i file di lingua. |
13 | Number Helper Il file Number Helper contiene funzioni che aiutano a lavorare con i dati numerici. |
14 | Path Helper Il file Path Helper contiene funzioni che consentono di lavorare con i percorsi dei file sul server. |
15 | Security Helper Il file Security Helper contiene funzioni relative alla sicurezza. |
16 | Smiley Helper Il file Smiley Helper contiene funzioni che consentono di gestire gli smile (emoticon). |
17 | String Helper Il file String Helper contiene funzioni che aiutano a lavorare con le stringhe. |
18 | Text Helper Il file Text Helper contiene funzioni che aiutano a lavorare con il testo. |
19 | Typography Helper Il file Typography Helper contiene funzioni che aiutano a formattare il testo in modi semanticamente rilevanti. |
20 | URL Helper Il file Helper URL contiene funzioni che aiutano a lavorare con gli URL. |
21 | XML Helper Il file Helper XML contiene funzioni che aiutano a lavorare con i dati XML. |
Caricamento di un aiutante
È possibile caricare un aiutante come mostrato di seguito:
$this->load->helper('name');
Dove nome è il nome dell'helper. Ad esempio, se desideri caricare l'URL Helper, può essere caricato come:
$this->load->helper('url');
Routing
CodeIgniter ha un sistema di instradamento URI intuitivo, in modo da poter reindirizzare facilmente l'URL. In genere, esiste una relazione uno a uno tra una stringa URL e la sua classe / metodo controller corrispondente. I segmenti in un URI normalmente seguono questo modello:
your-domain.com/class/method/id/
Il first segment rappresenta la classe controller che dovrebbe essere invocata.
Il second segment rappresenta la funzione di classe, o metodo, che dovrebbe essere chiamato.
Il thirde tutti i segmenti aggiuntivi rappresentano l'ID e tutte le variabili che verranno passate al controller.
In alcune situazioni, potresti voler modificare questo meccanismo di instradamento predefinito. CodeIgniter fornisce funzionalità attraverso cui è possibile impostare le proprie regole di instradamento.
Personalizza le regole di instradamento
C'è un file particolare dove puoi gestire tutti questi. Il file si trova in application / config / routes.php. Troverai un array chiamato $ route in cui puoi personalizzare le tue regole di routing. La chiave nell'array $ route deciderà cosa instradare e il valore deciderà dove instradare. Ci sono tre percorsi riservati in CodeIgniter.
SN | Percorsi e descrizione riservati |
---|---|
1 | $route['default_controller'] Questa rotta indica quale classe controller deve essere caricata, se l'URI non contiene dati, come avviene quando le persone caricano l'URL di root. Sei incoraggiato ad avere un percorso predefinito altrimenti apparirà una pagina 404, per impostazione predefinita. Possiamo impostare qui la home page del sito Web in modo che venga caricata per impostazione predefinita. |
2 | $route['404_override'] Questa route indica quale classe controller deve essere caricata se il controller richiesto non viene trovato. Ignorerà la pagina di errore 404 predefinita. Non influirà sushow_404() funzione, che continuerà a caricare l'impostazione predefinita error_404.php file in formato application/views/errors/error_404.php. |
3 | $route['translate_uri_dashes'] Come evidente dal valore booleano, questo non è esattamente un percorso. Questa opzione ti consente di sostituire automaticamente i trattini ('-') con i trattini bassi nei segmenti dell'URI del controller e del metodo, risparmiando così voci di percorso aggiuntive se necessario. Ciò è necessario perché il trattino non è un carattere di classe o di nome metodo valido e causerà un errore irreversibile, se si tenta di utilizzarlo. |
I percorsi possono essere personalizzati da wildcards o utilizzando regular expressions ma tieni presente che queste regole personalizzate per il routing devono venire dopo le regole riservate.
Caratteri jolly
Possiamo usare due caratteri jolly come spiegato di seguito:
(:num) - Corrisponderà a un segmento contenente solo numeri.
(:any) - Corrisponderà a un segmento contenente qualsiasi carattere.
Example
$route['product/:num']='catalog/product_lookup';
Nell'esempio precedente, se la parola letterale "prodotto" si trova nel primo segmento dell'URL e un numero si trova nel secondo segmento, vengono invece utilizzati la classe "catalogo" e il metodo "ricerca_prodotto".
Espressioni regolari
Come i caratteri jolly, possiamo anche usare espressioni regolari in $route array keyparte. Se un URI corrisponde a un'espressione regolare, verrà instradato alla parte del valore impostata nell'array $ route.
Example
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
Nell'esempio precedente, un URI simile a products / shoes / 123 chiamerebbe invece "shoes"Controller class e"id_123" metodo.