Welcome to the Cookbook

loading...

3.11.2 Criando Helpers

Se os helpers já disponíveis por padrão no CakePHP (ou alguns dos outros disponíveis no Cakeforge ou no Bakery) não atenderem às suas necessidades, saiba que os helpers são fáceis de se criar.

Digamos, p.ex., que você queira criar um helper que possa ser usado para exibir um link especificamente estilizado com CSS e que você precisa exibir em vários locais de sua aplicação. Para fazer com que sua lógica corresponda a estrurura existente para helpers do CakePHP você vai precisar criar uma nova classe em /app/views/helpers. Vamos chamar nosso novo helper de LinkHelper. O arquivo autal da classe PHP deve ser algo parecido com isto:

<?php
/* /app/views/helpers/link.php */

class LinkHelper extends AppHelper {
    function makeEdit($title, $url) {
        // A lógica para criar um link especialmente formatado vai aqui...
    }
}

?>
  1. <?php
  2. /* /app/views/helpers/link.php */
  3. class LinkHelper extends AppHelper {
  4. function makeEdit($title, $url) {
  5. // A lógica para criar um link especialmente formatado vai aqui...
  6. }
  7. }
  8. ?>

Há uns poucos métodos incluídos na classe Helper do CakePHP e que você eventualmente possa querer utilizar:

output(string $string)

Utilize este método para manipular quaisquer dados de volta para sua view.

<?php
function makeEdit($title, $url) {
    // Usa o método de saída dos helpers para manipular
    // os dados formatados de volta para a view:
    return $this->output(
        "<div class=\"editOuter\">
         <a href=\"$url\" class=\"edit\">$title</a>
         </div>"
    );
}
?>
  1. <?php
  2. function makeEdit($title, $url) {
  3. // Usa o método de saída dos helpers para manipular
  4. // os dados formatados de volta para a view:
  5. return $this->output(
  6. "<div class=\"editOuter\">
  7. <a href=\"$url\" class=\"edit\">$title</a>
  8. </div>"
  9. );
  10. }
  11. ?>

3.11.2.1 Incluindo outros Helpers

Você pode querer usar alguma funcionalidade que já esteja presente em algum outro helper. Para isso, você pode especificar os helpers que deseja usar com o array $helpers, tal como você especificaria em um controller.

<?php
/* /app/views/helpers/link.php (using other helpers) */
class LinkHelper extends AppHelper {
    var $helpers = array('Html');

    function makeEdit($title, $url) {
        // Usa o HtmlHelper para exibir
        // dados formatados:

        $link = $this->Html->link($title, $url, array('class' => 'edit'));

        return $this->output("<div class=\"editOuter\">$link</div>");
    }
}
?>
  1. <?php
  2. /* /app/views/helpers/link.php (using other helpers) */
  3. class LinkHelper extends AppHelper {
  4. var $helpers = array('Html');
  5. function makeEdit($title, $url) {
  6. // Usa o HtmlHelper para exibir
  7. // dados formatados:
  8. $link = $this->Html->link($title, $url, array('class' => 'edit'));
  9. return $this->output("<div class=\"editOuter\">$link</div>");
  10. }
  11. }
  12. ?>

3.11.2.2 Callback method

There is no translation yet for this section. Please help out and translate this.. More information about translations

Helpers feature a callback used by the parent controller class.

beforeRender()

The beforeRender method is called after the controller's beforeRender method but before the controller's renders views and layout.

3.11.2.3 Usando seu Helper

Tendo vocÊ criado seu helper e colocado-o em /app/views/helpers/, você será capaz de incluí-lo em seus controllers usando a variável especial $helpers.

Uma vez que seu controller tenha conhecimento desta nova classe, você pode usá-la em suas views acessando uma variável declarada depois do helper:

<!-- faz um link utilizando o novo helper -->
<?php echo $link->makeEdit('Modifique esta Receita', '/recipes/edit/5') ?>
  1. <!-- faz um link utilizando o novo helper -->
  2. <?php echo $link->makeEdit('Modifique esta Receita', '/recipes/edit/5') ?>

Os helpers Html, Form e Session (este último, se as sessões estiverem habilitadas) já ficam sempre disponíveis.