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.

3.5.2.4.1 form

$this->params['form']

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

3.5.2.4.2 admin

$this->params['admin']

Is set to 1 if the current action was invoked via admin routing.

3.5.2.4.3 bare

$this->params['bare']

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

3.5.2.4.4 isAjax

$this->params['ajax']

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.

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

3.5.2.4.6 action

$this->params['action']

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

3.5.2.4.7 pass

>$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'.

3.5.2.4.8 url

$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
)

3.5.2.4.9 data

$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.10 prefix

$this->params['prefix']

Set to the routing prefix. For example, this attribute would contain the string "admin" during a request to /admin/posts/someaction.

3.5.2.4.11 named

$this->params['named']

Stores any named parameters in the url query string in the form /key:value/. For example, if the URL /posts/view/var1:3/var2:4 was requested, $this->params['named'] would be an array containing:

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

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.