3.5.2 Atributos
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';
}
?>
<?php# exemplo de uso do atributo $name do controllerclass RecipesController extends AppController {var $name = 'Recipes';}?>
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');
}
?>
<?phpclass RecipesController extends AppController {var $name = 'Recipes';var $uses = array('Recipe', 'User');var $helpers = array('Html', 'Ajax');var $components = array('Session', 'Email');}?>
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';
}
}
?>
<?php# Usando $layout para definir um layout alternativoclass RecipesController extends AppController {function quickSave() {$this->layout = 'ajax';}}?>
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'];
?>
<?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'];?>
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.
