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.
$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
)
[url] => Array([url] => posts/view[var1] => 3[var2] => 4)
$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.1 form
$this->params['form']
$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']
$this->params['bare']
Stores 1 if the current layout is empty, 0 if not.
3.5.2.4.3 isAjax
$this->params['ajax']
$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']
$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']
$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']
$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']
$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
)
[url] => Array([url] => posts/view[var1] => 3[var2] => 4)
3.5.2.4.8 data
$this->data
$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'];
?>
<?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'];?>
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.
