3.5.2 Atributos

Para uma lista completa de atributos do controller e suas descrições visite a API do CakePHP. Dê uma olhada http://api.cakephp.org/1.2/classController.html.

3.5.2.1 $name

Usuários PHP4 devem iniciar suas definições de controllers usando o atributo $name. O atributo $name deve conter o nome do controller. Geralmente é apenas a forma plural do nome do model. Isso cuida de alguns dos problemas de nomes de classe do PHP4 e ajuda o CakePHP a encontrar os nomes das coisas.

<?php

#   exemplo de uso do atributo $name do controller

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

?>	
  1. <?php
  2. # exemplo de uso do atributo $name do controller
  3. class RecipesController extends AppController {
  4. var $name = 'Recipes';
  5. }
  6. ?>

3.5.2.2 $components, $helpers e $uses

Os próximos atributos de controller usados com maior frequência dizem ao CakePHP que helpers(Ajudantes), components(Componentes), e models você usará junto com o controller atual. Usar esses atributos disponibiliza essas classes MVC para o controller como variáveis de classe ($this->NomeDoModel, por exemplo).

Por favor perceba que cada controller tem algumas dessas classes disponíveis por padrão, então você pode nem mesmo ter que configurar o seu controller.

Controllers tem por padrão seu model principal disponível. Nosso ReceitasController terá o model Receita disponível em $this->Receita, e nosso ProdutosController também tem acesso ao model Produto em $this->Produto.

Os helpers Html e Session estão sempre disponíveis por padrão, assim como o componente Session. Para aprender mais sobre essas classes, lembre-se de dar uma olhada em suas repectivas sessões mais a frente nesse manual.

<?php

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

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

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

Quando estiver definindo esses atributos, tenha certeza de incluir as classes padrão (como Html no array $helpers, por exemplo) se você pretende usá-los.

3.5.2.3 Relativo a página: $layout e $pageTitle

Alguns poucos atributos existem nos controllers CakePHP que dão maior controle sobre como suas views são embutidas em um layout.

O atributo $layout pode conter o nome do layout salvo em /app/views/layouts. Você especifica um layout atribuindo ao atributo $layout o nome do arquivo de layout menos a extensão .ctp. Se esse atributo não for definido, o CakePHP renderiza o layout default(padrão). Se você não definiu um em /app/views/default.ctp, o layout default do núcle do CakePHP será renderizado.

<?php

#   Usando $layout para definir um layout alternativo

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

?>
  1. <?php
  2. # Usando $layout para definir um layout alternativo
  3. class RecipesController extends AppController {
  4. function quickSave() {
  5. $this->layout = 'ajax';
  6. }
  7. }
  8. ?>

O atributo $pageTitle do controller torna possível definir o título da página renderizada. Para que isso funcione apropriadamente, seu layout precisa ter embutido a variável $title_for_layout entre as tags <title> no cabeçalho do documento HTML.

Apenas atribua à $pageTitle a string que você quer ver no <title> do seu documento.

3.5.2.4 Atributos dos parâmetros ($params)

Parâmetros do controller estão disponíveis em $this->params no seu controller CakePHP. Essa variável é usada para dar acesso à informação sobre a requisição atual. O uso mais comum do $this>params é obter acesso à informação que foi enviada ao controller via operações POST ou GET.

$this->params['form']

Qualquer dado do POST de qualquer formulário é guardado aqui, incluindo também informação encontrada em $_FILES.

$this->params['bare']

Guarda 1 se o layout atual está vazio, 0 se não.

$this->params['isAjax']

Guarda 1 se o layout atual é 'ajax', 0 se não. Essa variável só é configurada se o component RequestHandler está sendo usado no controller.

$this->params['controller']

Guarda o nome do controller atual manipulando a requisição. Por exemplo, se a URL /posts/ver/1 foi requisitada, $this->params['controller'] será igual à 'posts'.

$this->params['action']

Guarda o nome da action atual manipulando a requisição. Por exemplo, se a URL /posts/ver/1 é requisitada, $this->params['action'] será igual 'ver'.

$this->params['pass']

Guarda a query string GET passada com a requisição atual. Por exemplo, se a URL /posts/ver/?var1=3&var2=4 foi requisitada, $this->params['pass'] será igual à '?var1=3&var2=4'.

$this->params['url']

Guarda a URL atual requisitada, com os pares chave-valor das variáveis GET. Por exemplo, se a URL /posts/view/?var1=3&var2=4 foi chamada, $this->params['url'] conterá:

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

$this->data

Usado para manipular os dados POST enviados dos formulários FormHelper ao controller.

<?php

// O FormHelper é usado para criar um elemento form:

$form->text('Usuario.primeiro_nome');

// Quando rederizado, se parece com: 

<input name="data[Usuario][primeiro_nome]" value="" type="text" />

// Quando o formulário é enviado para o controller via POST,
// os dados são mostrados em $this->data.

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

?>
  1. <?php
  2. // O FormHelper é usado para criar um elemento form:
  3. $form->text('Usuario.primeiro_nome');
  4. // Quando rederizado, se parece com:
  5. <input name="data[Usuario][primeiro_nome]" value="" type="text" />
  6. // Quando o formulário é enviado para o controller via POST,
  7. // os dados são mostrados em $this->data.
  8. //The submitted first name can be found here:
  9. $this->data['Usuario']['primeiro_nome'];
  10. ?>

3.5.2.4.1 form

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

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

3.5.2.4.2 bare

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

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

3.5.2.4.3 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.

3.5.2.4.4 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".

3.5.2.4.5 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".

3.5.2.4.6 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".

3.5.2.4.7 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. )

3.5.2.4.8 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. ?>

3.5.2.5 Outros atributos

Ainda que você possa dar uma olhada nos detalhes de todos atributos de controllers na API, existem outros atributos de controllers que merecem suas próprias sessões no manual.

O atributo $cacheAction serve para criar cache das views, e o atributo $paginate é usado para criar a paginação padrão para o controller. Para mais informação sobre como usar esses atributos, dê uma olhada em suas respectivas sessões mais a frente nesse manual.