Welcome to the Cookbook

loading...
Please login to continue

3.5.4 Controller attributen

De originele tekst van deze rubriek is gewijzigd nadat deze is vertaald. Help om dit verschil op te lossen. Je kunt:

Meer informatie over vertalingen

Voor een complete lijst van controller attributen en de beschrijvingen hiervan kunt u de CakePHP API bezoeken. Deze vind u op de volgende pagina: http://api.cakephp.org/1.2/class_controller.html

3.5.4.1 $name

PHP4 gebruikers zullen in hun controllers definities moeten beginnen met de $name attribuut. De $name attribuut zal de naam van de controller moeten zijn. Dit is het meervoud van het primaire model dat de controller gebruikt. Dit lost sommige PHP4 class namen op en helpt CakePHP de benaming te behouden.

<?php

#   $name controller attribuut voorbeeld

class RecipesController extends AppController {
   var $name = 'Recipes';
}

?>	
  1. <?php
  2. # $name controller attribuut voorbeeld
  3. class RecipesController extends AppController {
  4. var $name = 'Recipes';
  5. }
  6. ?>

3.5.4.2 $components, $helpers and $uses

De originele tekst van deze rubriek is gewijzigd nadat deze is vertaald. Help om dit verschil op te lossen. Je kunt:

Meer informatie over vertalingen

De volgende meestgebruikte controller attributen vertellen CakePHP welke helpers, components en models je zal gebruiken voor de huidige controller. Door deze attributen te gebruiken zullen de MVC classes bruikbaar worden als class variablen voor de controller ($this->ModelNaam, bijvoorbeeld).

Elke controller heeft sommige van deze classes al standaard in gebruik. Zodoende hoef je niet altijd je controller te configureren.

Controllers hebben standaard al toegang tot hun primaire model. Onze RecipesController kan de class van het Recipe model aanroepen via $this->Recipe. Een ProductsController zal het Product model kunnen aanroepen via $this->Product.

De Html, Form en Session Helpers zijn altijd bruikbaar, zo ook de SessionComponent. Om meer over deze classes te weten te komen zult u de respectievelijke handleiding hiervan moeten lezen.

Hieronder een voorbeeld waarin u de CakePHP vertelt welke extra MVC classes u wilt gebruiken.

<?php
class RecipesController extends AppController {
    var $name = 'Recipes';

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

Elke van deze variablen zijn samengevoegd met hun inherente waarden. Het is bijvoorbeeld niet noodzakelijk om de Form helper te herdefiniëren of anderen die al gedefiniëerd staan in uw App controller.

3.5.4.3 Pagina gerelateerde attributen: $layout and $pageTitle

De originele tekst van deze rubriek is gewijzigd nadat deze is vertaald. Help om dit verschil op te lossen. Je kunt:

Meer informatie over vertalingen

Enkele attributen bestaan in CakePHP controllers die je de controle geven over hoe jouw view is gedefinieerd binnen de layout

De $layout attribuut kan worden gedefinieerd als de layout opgeslagen in /app/views/layouts. Je kan de layout instellen door $layout te definieren gelijk aan de naam van de layout file, zonder de .ctp extensie. Als dit attribuut niet is gedefineerd zal CakePHP de defailt layout verwerken, default.ctp. Als je ook geen hebt gedefineerd in /app/views/layouts/default.ctp, zal CakePHPs core default layout worden gebruikt.

<?php

//   //   Gebruik van $layout om een alternatieve layout te definieren

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

?>
  1. <?php
  2. // // Gebruik van $layout om een alternatieve layout te definieren
  3. class RecipesController extends AppController {
  4. function quickSave() {
  5. $this->layout = 'ajax';
  6. }
  7. }
  8. ?>

Je kan ook de titel van de pagina's veranderen (deze bevind zich bovenaan de browser) door gebruik te maken van $pageTitle. Om hier van gebruik te kunnen maken dien je in de layout code het volgende te hebben: de $title_for_layout variable, tussen de <title> en </title> tags in in de <head> van het document.

<?php

//   Gebruik $pageTitle om een titel voor de desbetreffende pagina te definieren

class RecipesController extends AppController {
    function quickSave() {
        $this->pageTitle = 'Mijn zoekmachines pagina-titel';
    }
}

?>
  1. <?php
  2. // Gebruik $pageTitle om een titel voor de desbetreffende pagina te definieren
  3. class RecipesController extends AppController {
  4. function quickSave() {
  5. $this->pageTitle = 'Mijn zoekmachines pagina-titel';
  6. }
  7. }
  8. ?>

Je kan de pagina titel in de view gebruiken door $this->pageTitle bij <title> en </title> tags. (Het $this-> gedeelte maakt deel uit van de variable.) Dit is aanbevolen, gezien het de logic van de layout en content onderscheid. Voor statische pagina's zal je$this->pageTitle in de view moeten gebruiken.

Indien $this->pageTitle niet is gedefinieerd zal een automatisch gegenereerde titel, gebaseerd op de controller naam, worden gebruikt. Of de view file in het geval van een statische pagina.

3.5.4.4 The Parameters Attribute ($params)

De Controller parameters zijn beschikbaar via $this->params in uw CakePHP Controllers. Deze variable wordt gebruikt voor informatie van de huidige request. De meest gebruikte toepassing van $this->params is om toegang te krijgen tot informatie die aan de Controller is meegegeven vua de POST of GET handelingen.

3.5.4.4.1 form

$this->params['form']

Alle POST data van elk form is hierin opgeslagen, zo ook informatie uit $_FILES.

3.5.4.4.2 admin

$this->params['admin']

Deze variable is 1 indien de huidige actie een resultaat is van een admin routing.

3.5.4.4.3 bare

Er is geen nog vertaling vertaling voor deze rubriek. Help ons en vertaal dit.. Meer informatie over vertalingen

$this->params['bare']

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

3.5.4.4.4 isAjax

De originele tekst van deze rubriek is gewijzigd nadat deze is vertaald. Help om dit verschil op te lossen. Je kunt:

Meer informatie over vertalingen

$this->params['ajax']

Deze variable is 1 indien de huidige request ajax is, anders 0. Let op: deze variable is alleen gedefinieerd wanneer de RequestHandler component wordt gebruikt in de controller.

3.5.4.4.5 controller

$this->params['controller']

Bevat de naam van de huidige controller die de request verwerkt. Bijvoorbeeld, als de URL /posts/view/1 is aangevraagd zal de variable $this->params['controller'] "posts" zijn.

3.5.4.4.6 action

$this->params['action']

Bevat de naam van de huidige actie die de request verwerkt. Bijvoorbeeld, als de URL /posts/view/1 is aangevraagd, zal de variable $this->params['action'] "view" zijn.

3.5.4.4.7 pass

De originele tekst van deze rubriek is gewijzigd nadat deze is vertaald. Help om dit verschil op te lossen. Je kunt:

Meer informatie over vertalingen

$this->params['pass']

Bevat de GET query tekst meegegeven aan de huidige request. Bijvoorbeeld, als de URL /posts/view/?var1=3&var2=4 aangevraagd is, zal de variable $this->params['pass'] "?var1=3&var2=4" zijn.

3.5.4.4.8 url

$this->params['url']

Bevat de huidige aangevraagde URL, samen met de key-value paren van de GET variablen. Bijvoorbeeld, als de URL /posts/view/?var1=3&var2=4 aangevraagd is, zal $this->params['url'] het volgende opleveren:

[url] => Array
(
    [url] => posts/view
    [var1] => 3
    [var2] => 4
)

3.5.4.4.9 data

$this->data

Deze wordt gebruikt om data van POST, gestuurd via de FormHelper forms, te verwerken.

// De FormHelper gebruiken om een form element te maken:
$form->text('User.voornaam');
  1. // De FormHelper gebruiken om een form element te maken:
  2. $form->text('User.voornaam');

Dit geeft als output zoiets als:

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

Wanneer het formulier is verzonden naar de controller via POST zal de data te vinden zijn in $this->data

 
// De ingevulde voornaam is dan te vinden op:
$this->data['User']['voornaam'];
  1. // De ingevulde voornaam is dan te vinden op:
  2. $this->data['User']['voornaam'];

3.5.4.4.10 prefix

$this->params['prefix']

Bevat het routing voorzetsel. Bijvoorbeeld, het attribuut zal de string "admin" zijn gedurende de aanvraag naar /admin/posts/edit.

3.5.4.4.11 named

$this->params['named']

Bevat genoemde parameters van de URL in de vorm van /sleutel:waarde/. Bijvoorbeeld, bij de aangevraagde URL /posts/view/var1:3/var2:4, bestaat $this->params['named'] uit de volgende array:

[named] => Array
(
    [var1] => 3
    [var2] => 4
)

3.5.4.5 Other Attributes

In de API kan je de details van alle controller attributen bekijken. Daarnaast bestaan er nog andere controller attributen die hun eigen sectie in de handleiding hebben.

Het $cacheAction attribuut helpt bij het cachen van views. Het $paginate attribuut wordt gebruikt om standaard pagina opdelingen mee te geven aan de controller. Voor meer information over hoe deze te gebruiken dien je de respectievelijke secties in deze handleiding te raadplegen.

3.5.4.6 persistModel

Er is geen nog vertaling vertaling voor deze rubriek. Help ons en vertaal dit.. Meer informatie over vertalingen

Stub. Update Me!

Used to create cached instances of models a controller uses. When set to true, all models related to the controller will be cached. This can increase performance in many cases.