CakePHP e seu form Helper > cleiver.com

CakePHP e seu form Helper

28.10.2008 | CakePHP
Tags: ,

Utilizar os Helpers ajudam e facilitam muito o desenvolvimento, isso todo mundo deve saber. Mas uma coisa que me incomoda bastante é o código automático gerado algumas vezes. Eu tenho sindrome de Deus e gosto de ter controle de tudo, o que não é possível as vezes utilizando o Form Helper.

Por exemplo, vamos criar um formulário com o campo username e brincar com ele. Basicamente, seria um formulário para cadastrar usernames em um sistema. Na view add.ctp temos o seguinte código:

echo $form->create('User');
echo $form->input('username');
echo $form->end('Save');

Ele vai gerar o seguinte HTML no navegador:

<div class="input text">
   <label for="UserUsername">Username</label>
<input id="UserUsername" maxlength="25" name="data[User][username]" type="text" /></div>

Se eu tiver algum erro na validação dos dados (feitos no model), a mensagem de erro será exibida abaixo no input.

<div class="input text">
   <label for="UserUsername">Username</label>
<input id="UserUsername" maxlength="25" name="data[User][username]" type="text" />
<div class="error-message">Username required!</div>
</div>

Mas, e se eu quiser essa mensagem de erro em outro lugar? Em cima do input, por exemplo? E se eu não quiser esse label? Supondo que eu queira exibir somente o input e a mensgem de erro em cima dela, tenho que fazer o seguinte:

echo $form-&gt;error('username');
echo $form-&gt;input('username', array('label'=&gt;false, 'div'=&gt;false, 'error'=&gt;false));

Coloco a mensagem de erro onde eu quiser através do método error. Depois oculto as tags que não quero na criação do input. A div estou ocultando por causa da semântica, senão a mensagem de erro ficaria do lado de fora da div que contém o input. Estou setando o error do input como false pq senão além dele exibir a mensagem através do método error, ele também ira criar a div com o erro embaixo do input, ficando assim duas mensagens.

Deve ter uma solução melhor para casos assim, mas como não encontrei nada na minha pesquisa, tive que dar meu jeito.

Nenhum post relacionado.

3 Comentários

  1. Rafael Dx7

    olha só, ele usa o gist… :P

    é rapazinho… querer ser Deus dá trabalho.

  2. Chris Benseler

    Estou na dúvida entre usar o CakePHP e o Joomla pra um projeto.
    E agora? hehe

  3. Alexandre de Oliveira

    “Coloco a mensagem de erro onde eu quiser através do método error”.

    Faltou você demonstrar o método ERROR, hehe

    @Chris
    Joomla é pra controlar conteúdo, bem diferente de CakePHP. Usa Joomla para o back-end e o CakePHP para o front-end.