Table of Contents : Il manuale

Attributi della classe Controller

Per una lista completa degli attributi ti consigliamo di visitare CakePHP API. Che trovi qui: http://api.cakephp.org/1.2/class_controller.html.

$name

Gli utenti di PHP4 dovrebbero porre in tutte in ogni controller la definizione dell'attributo $name. L'attributo $name deve corrispondere con il nome del controller. Normalmente questo nome corrisponde al plurale del modello principale a cui il controller fa riferimento. Questo accorgimento risolve alcuni problemi di PHP4 con i nomi delle classi, e aiuta CakePHP a usare i nomi corretti.

<?php

#   esempio di utilizzo dell'attributo $name 

class RicetteController extends AppController {
   var $name = 'Ricette';
}

?>	
  1. <?php
  2. # esempio di utilizzo dell'attributo $name
  3. class RicetteController extends AppController {
  4. var $name = 'Ricette';
  5. }
  6. ?>

$components, $helpers e $uses

Molto importanti sono gli attributi che definiscono quali helpers, components e models devono essere usati dal controller. Usando questi attributi, queste classi MVC saranno accessibili dal controller come variabili ($this->ModelName, per esempio).

Fai attenzione che ogni controller dispone di default di alcune classi, quindi non devi necessariamente configurarle ogni volta tutte.

In particolare i controllers hanno accesso alla classe del modello principale a cui sono associati. In nostro RicetteController è associato di default al modello Ricetta e vi accede tramite la variabile $this->Ricetta, mentre il nostro controller ProdottiController accede a sua volta al modello Prodotto tramite $this->Prodotto.

Gli Helper Html e Session sono disponibili di default, come anche il componente SessionComponent. I dettagli su queste classi saranno spiegati più avanti in questo manuale.

Osserva come puoi utilizzare le classi associate al controller in CakePHP.

<?php

class RicetteController extends AppController {
    var $name = 'Ricette';

    var $uses = array('Ricetta', 'User');
    var $helpers = array('Html', 'Ajax');
    var $components = array('Session', 'Email');
}

?>   
  1. <?php
  2. class RicetteController extends AppController {
  3. var $name = 'Ricette';
  4. var $uses = array('Ricetta', 'User');
  5. var $helpers = array('Html', 'Ajax');
  6. var $components = array('Session', 'Email');
  7. }
  8. ?>

Quando definisci questi attributi, stai attendo a includere anche le classi normalmente incluse di default (come l'helper Html, ad esempio) se intendi utilizzarle. Infatti quando definisci esplicitamente questi attributi, sovrascrivi di fatto le impostazioni di default.

Attributi della pagina: $layout e $pageTitle

In CakePHP c'è un set di attributi che ti permettono di controllare il modo in cui le viste sono inserite nel layout.

L'attributo $layout può essere impostato con il nome di un layout presente nella cartella /app/views/layouts. Il valore della variabile $layout deve coincidere con il nome del file da utilizzare, senza l'estensione .ctp. Se non imposti la variabile, CakePHP utilizza il layout default. Se non ne hai definito uno in /app/views/default.ctp, CakePHP utilizza il suo layout predefinito interno.

<?php

#   Usa $layout per utilizzare un layout personalizzato

class RecipesController extends AppController {
    function quickSave() {
        $this->layout = 'ajax';
    }
}

?>
  1. <?php
  2. # Usa $layout per utilizzare un layout personalizzato
  3. class RecipesController extends AppController {
  4. function quickSave() {
  5. $this->layout = 'ajax';
  6. }
  7. }
  8. ?>

L'attributo $pageTitle del controller ti permette di impostare il titolo visualizzato nella pagina. Perché tutto funzioni, il layout deve contenere una variabile $title_for_layout, preferibilmente richiamata nel tag <title> della sezione head della pagina HTML.

Basta impostare $pageTitle con la stringa da visualizzare nel tag <title> del documento.

L'attributo Parametri ($params)

I parametri inviati al controller al momento della richiesta sono accessibili tramite la variabile $this->params. Questa variabile serve appunto per raccogliere le informazioni inviate al momento della richiesta. L'utilizzo più comune di $this->params consiste nell'accedere alle informazioni inviate al controller tramite una richiesta GET o POST.

form

$this->params['form']
  1. $this->params['form']

Any POST data from any form is stored here, including information also found in $_FILES.

bare

$this->params['bare']
  1. $this->params['bare']

Stores 1 if the current layout is empty, 0 if not.

isAjax

$this->params['ajax']
  1. $this->params['ajax']

Stores 1 if the current layout is set to ‘ajax’, 0 if not. This variable is only set if the RequestHandler Component is being used in the controller.

controller

$this->params['controller']
  1. $this->params['controller']

Stores the name of the current controller handling the request. For example, if the URL /posts/view/1 was requested, $this->params['controller'] would equal "posts".

action

$this->params['action']
  1. $this->params['action']

Stores the name of the current action handling the request. For example, if the URL /posts/view/1 was requested, $this->params['action'] would equal "view".

pass

$this->params['pass']
  1. $this->params['pass']

Stores the GET query string passed with the current request. For example, if the URL /posts/view/?var1=3&var2=4 was requested, $this->params['pass'] would equal "?var1=3&var2=4".

url

$this->params['url']
  1. $this->params['url']

Stores the current URL requested, along with key-value pairs of get variables. For example, if the URL /posts/view/?var1=3&var2=4 was called, $this->params['url'] would contain:

[url] => Array
(
    [url] => posts/view
    [var1] => 3
    [var2] => 4
)
  1. [url] => Array
  2. (
  3. [url] => posts/view
  4. [var1] => 3
  5. [var2] => 4
  6. )

data

$this->data
  1. $this->data

Used to handle POST data sent from the FormHelper forms to the controller.

<?php

// The FormHelper is used to create a form element:

$form->text('User.first_name');

// When rendered, it looks something like:

<input name="data[User][first_name]" value="" type="text" />

// When the form is submitted to the controller via POST,
// the data shows up in $this->data.

//The submitted first name can be found here:
$this->data['User']['first_name'];

?>
  1. <?php
  2. // The FormHelper is used to create a form element:
  3. $form->text('User.first_name');
  4. // When rendered, it looks something like:
  5. <input name="data[User][first_name]" value="" type="text" />
  6. // When the form is submitted to the controller via POST,
  7. // the data shows up in $this->data.
  8. //The submitted first name can be found here:
  9. $this->data['User']['first_name'];
  10. ?>

Other Attributes

While you can check out the details for all controller attributes in the API, there are other controller attributes that merit their own sections in the manual.

The $cacheAction attribute aids in caching views, and the $paginate attribute is used to set pagination defaults for the controller. For more information on how to use these attributes, check out their respective sections later on in this manual.