Eduiagami 1 Denunciar post Postado Janeiro 7, 2010 Olá pessoal sou novo com o cakePHP e estou tentando validar um formulario mas nao estou conseguindo, ao inves de validar ele tenta jogar direto para banco alguem poderia colocar um passo a posso de como validar com cakephp muito obrigado Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Janeiro 7, 2010 Olhe este exemplo: var $validate = array( 'titulo' => array( array( 'rule' => array('minLength' , 5), 'message' => 'Este campo deve ter no mínimo 5 caracteres.' ) ), 'texto' => array( array( 'rule' => 'notEmpty', 'message' => 'Este campo não pode ficar vazio.' ) ) ); Se você está confuso com a hierarquia do array, você pode suar no beforeValidate(): function beforeValidate(){ $validate = &$this->validate; $validate['titulo'][0]['rule'] = array('minLength' , 5); $validate['titulo'][0]['message'] = 'Este campo deve ter no mínimo 5 caracteres.'; $validate['texto'][0]['rule'] = 'notEmpty'; $validate['texto'][0]['message'] = 'Este campo não pode ficar vazio.'; } Lembre-se que você deve inserir isso no Model que você quer que as informações sejam validadas. Link util: http://book.cakephp....Data-Validation Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 9, 2010 OLá lucas disculpa a demora, tb trabalho com manutenção de micros =D Pow eu até já coloquei issu ai, mas parece que nao está funcionando, não exibe mensagem alguma. sabe oq pode ser? Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Janeiro 9, 2010 Você está colocando no Model? Me mostre seu código. Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 9, 2010 Você está colocando no Model? Me mostre seu código. Model var $validate = array( 'titulo' => array( 'alphaNumeric' => array( 'rule' => 'alphaNumeric', 'required' => true, 'message' => 'Letras e números somente' ), 'between' => array( 'rule' => array('between', 5, 60), 'message' => 'Entre 5 e 60 caracteres' ), 'isUnique' => array( 'rule'=>'isUnique', 'message'=>'Este titulo já esta cadastrado a um artigo' ), 'notEmpty'=>array('rule'=>'notEmpty','message'=>'Este campo não pode ser deixado em branco!') ), 'autor' =>array( 'alphanumeric'=>array( 'rule'=>'alphaNumeric', 'required'=>false, 'message'=>'Letras e numeros somente' ) ), 'autor_email'=>'email', 'texto'=> array('rule'=>'notEmpty','message'=>'Este campo não pode ser deixado em branco!') ); Ai esta Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Janeiro 9, 2010 Veja que ele não está bem estruturado, preste bem atenção neste: var $validate = array( 'titulo' => array( array( 'rule' => array('minLength' , 5), 'message' => 'Este campo deve ter no mínimo 5 caracteres.' ) ), 'texto' => array( array( 'rule' => 'notEmpty', 'message' => 'Este campo não pode ficar vazio.' ) ) ); Um atributo $validate que é um array. O primeiro item desse array é "titulo" que também tem como valor um array. E dentro deste outro array (o do "titulo") faz uma regra, ou seja: cada array dentro DO ARRAY de titulo representa uma regra. $validate = array( 'item' => array(array('regra1'), array('regra2'), array('regraN')), // este é exemplo 'item2' => array(array('rule'=>'isUnique'), array('rule' => 'notEmpty', 'message' => 'Não pode ser vazio')) .... ); Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 11, 2010 Olá coloquei igual você colocou ai em cima mas ele nao valida, ele ja tenta logo cadastrar e da erro. nao sei oq pode ser. e você? Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Janeiro 11, 2010 Poste seu Controller, Model, View e a estrutura da base de dados. (Só as partes necessárias). ele ja tenta logo cadastrar e da erroQue erro? Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 11, 2010 Poste seu Controller, Model, View e a estrutura da base de dados. (Só as partes necessárias). ele ja tenta logo cadastrar e da erroQue erro? MODEL----- class Conteudo extends AppModel{ var $name = "Conteudo"; var $belongsTo = array('Sessao','Cat'); //var $validate = array( //'titulo'=>'notEmpty' //); var $validate = array( 'titulo' => array( array( 'rule' => array('minLength' , 5), 'message' => 'Este campo deve ter no mínimo 5 caracteres.' ) ), 'texto' => array( array( 'rule' => 'notEmpty', 'message' => 'Este campo não pode ficar vazio.' ) ) ); } CONTROLLER---- function admin_cadastrar(){ if(!empty($this->data)){ if($this->Conteudo->save($this->data)){ $this->Session->setflash('<span class=erro_message>Conteudo (artigo) cadastrado com sucesso!</span>'); $this->redirect(array('controller'=>'conteudos','action'=>'index','admin'=>true)); }else{ $this->Session->setflash('<span class=erro_message>Falha ao cadastrar conteudo (artigo), volte e tente novamente!</span>'); $this->redirect(array('controller'=>'conteudos','action'=>'index','admin'=>true)); } }else{ $this->set('sessoes',$this->Sessao->find('list',array('fields'=>array('Sessao.id','Sessao.nome')))); } } VIEW <? echo $javascript->link('prototype');?> <script language="JavaScript" type="text/javascript" src="<?php echo $html->url('/js/ckeditor/ckeditor.js'); ?>"></script> <script id="headscript" type="text/javascript"> //<![CDATA[ document.write( '<script type="text/javascript" src="<?=$html->url('/');?>js/ckeditor/lang/_languages.js"><\/script>' ); //]]> </script> <h1 class="titulo">Conteudos (Artigos) - Cadastro</h1> <p>Cadastre artigos do site</p> <div class="formulario"> <? //formulario echo $form->create('Conteudo',array('action'=>'cadastrar')); echo $form->input('sessao_id',array('type'=>'select','label'=>'Sessão','options'=>$sessoes,'selected'=>'')); echo $form->input('cat_id',array('type'=>'select','label'=>'Categoria')); //ajax select $options = array( 'url' => array('controller' => 'cats' ,'action' => 'buscaCats','admin'=>true),'frequency'=>0.1, 'update' => 'ConteudoCatId'); echo $ajax->observeField('ConteudoSessaoId', $options); //autor echo $form->input('autor',array('type'=>'text','label'=>'Autor')); //email autor echo $form->input('autor_email',array('type'=>'text','label'=>'E-mail autor')); //fonte echo $form->input('fonte',array('type'=>'text','label'=>'Fonte')); //destaque echo $form->input('destaque',array('type'=>'select','label'=>'Destaque','options'=>array('sim'=>'sim','nao'=>'nao'))); //Ativo echo $form->input('ativo',array('type'=>'select','label'=>'Ativo','options'=>array('sim'=>'sim','nao'=>'nao'))); //titulo echo $form->input('titulo',array('type'=>'text','label'=>'Titulo','size'=>'60')); //subtitulo echo $form->input('subtitulo',array('type'=>'textarea','label'=>'Subtitulo','rows'=>'5','cols'=>'60')); ?> <br /> <br /> <label for="ConteudoTexto">Selecione o idioma (Total de :<span id="count"> </span> Idiomas!): </label><select disabled="disabled" id="languages" onchange="createEditor( this.value );"> <script type="text/javascript"> //<![CDATA[ // Pega linguagem da lista de linguens do arquivo _languages.js . for ( var i = 0 ; i < window.CKEDITOR_LANGS.length ; i++ ) { document.write( '<option value="' + window.CKEDITOR_LANGS[i].code + '">' + window.CKEDITOR_LANGS[i].name + '</option>' ); } //]]> </script> </select> <textarea cols="200" id="ConteudoTexto" name="data[Conteudo][texto]" rows="10"> </textarea> <script type="text/javascript"> //<![CDATA[ // Seta o numero de linguagems e joga no span com id count. document.getElementById( 'count' ).innerHTML = window.CKEDITOR_LANGS.length; var editor; function createEditor( languageCode ) { if ( editor ) editor.destroy(); // Atualiza o <textarea id="data[Conteudo][texto]"> com o CKEDITOR // instacia, usando as configurações padrao. editor = CKEDITOR.replace( 'ConteudoTexto', { skin : 'office2003', //skin do office 2003 language : languageCode, on : { instanceReady : function() { // espera o editar para ler os idiomas var languages = document.getElementById( 'languages' ); languages.value = this.langCode; languages.disabled = false; } } } ); } // incia o editar com a linguagem padrao PT-BR: createEditor( '' ); //]]> </script> <!-- fim do EDITOR --> <? echo $form->input('criacao',array('type'=>'hidden','value'=>date('Y/m/d h:m:i'))); echo $form->end('Cadastrar'); ?> </div> Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Janeiro 11, 2010 Se você digitar menos que 5 caracteres em titulo, ele bloqueia, porém não exibe mensagem? Aparece algo? Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 12, 2010 Se você digitar menos que 5 caracteres em titulo, ele bloqueia, porém não exibe mensagem? Aparece algo? Ele nao está bloqueando e nao está exibindo mensagem. a mensagem que eu falei é que eu proprio coloquei caso houvesse falha ao cadastrar. To perdidao todo mundo consegue validar com cakephp menos eu =\ Outra duvida você sabe ou tem algum codigo de exemplo de administração de menus? abraços e muito obrigado Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Janeiro 13, 2010 Ye... muito estranho. Eu lembro uma vez que tive problemas parecidos, porém ele só não exibia a mensagem, era problema de charset! Eu estava utilizando acentos nas mensagens, porem não estava em UTF-8... aí convertendo tudo deu certo. Acho que não dará certo, mas tente tirar as mensagens personalizadas....só para testar mesmo. Sobre os menus.... como assim? Menus você deve fazer na mão mesmo... pelomenos menus estaticos, não vejo necessidade de usar um helper ou coisa do tipo. Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 14, 2010 Ye... muito estranho. Eu lembro uma vez que tive problemas parecidos, porém ele só não exibia a mensagem, era problema de charset! Eu estava utilizando acentos nas mensagens, porem não estava em UTF-8... aí convertendo tudo deu certo. Acho que não dará certo, mas tente tirar as mensagens personalizadas....só para testar mesmo. Sobre os menus.... como assim? Menus você deve fazer na mão mesmo... pelomenos menus estaticos, não vejo necessidade de usar um helper ou coisa do tipo. Olá ai olha esse aki que tb não está funcionando //Model class Sessao extends AppModel{ var $name = "Sessao"; var $hasMany="Cat"; var $validate = array( 'nome' => array('rule' => 'notEmpty') ); } //View <h1 class="titulo">Sessão - Cadastrar</h1> <div class="formulario"> <? echo $form->create('Sessao',array('action'=>'admin_cadastrar')); echo"<div class='input'><label for='SessaoNome'>Nome</label>"; echo "<input type='text' id='SessaoNome' onkeypress='Change(this.id)' name='data[Sessao][nome]' />"; echo "</div>"; echo $form->input('url',array('type'=>'text','error'=>array('nome','Favor informe o nome'))); echo $form->input('descricao',array('type'=>'textarea')); echo $form->input('menu',array('type'=>'select','options'=>array('sim'=>'sim','nao'=>'nao'))); echo $form->input('ativo',array('type'=>'select','options'=>array('sim'=>'sim','nao'=>'nao'))); echo $form->input('criacao',array('type'=>'hidden','value'=>date("Y-m-d h:m:s"))); echo $form->end('Cadastrar'); ?> </div> não sei porq nao esta funcionando; Outra duvida como eu faço pra q quando eu excluir uma Sessão seja excluido tb uma categoria e seus artigos o relacionamento está assim: Model Sessao hasMany Categoria Model Cat belongsTo Sessao Model artigo belongsTo array('Sessao','Cat') abraços Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Janeiro 15, 2010 Para fazer o campo, use o FormHelper ao invés de fazer a mão, aí veja se a validação funciona. Sobre a exclusão em cascata, veja isso e procure por "depend" http://book.cakephp.org/pt/view/78/Associations-Linking-Models-Together Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 15, 2010 Para fazer o campo, use o FormHelper ao invés de fazer a mão, aí veja se a validação funciona. Sobre a exclusão em cascata, veja isso e procure por "depend" http://book.cakephp.org/pt/view/78/Associations-Linking-Models-Together msm eu fazendo a mao não está funcionando,pow você sabe como eu coloco um evento no input tipo onclick ou onkeypress abraços Obrigado por continuar tentando me ajudar Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Janeiro 15, 2010 Cara.... ou algo está passando ou tem algo muito estranho aí. Certifique-se de baixar a ultima versão. Em algumas vesões do Cake isso não funcionaria (como a 1.1). http://cakeforge.org/frs/download.php/735/cake_1.2.5.zip Para ver sua versão: Configure::version(); E sobre utilizar o FormHelper, eu disse porque se você não utilizalos as mensagens de erros não serão mostradas. Você também pode colocar onclick e onkeypress neles: $form->input('campo', array('onclick' => 'teste()', 'onkeypress' => 'test2()'); Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 16, 2010 Cara.... ou algo está passando ou tem algo muito estranho aí. Certifique-se de baixar a ultima versão. Em algumas vesões do Cake isso não funcionaria (como a 1.1). http://cakeforge.org/frs/download.php/735/cake_1.2.5.zip Para ver sua versão: Configure::version(); E sobre utilizar o FormHelper, eu disse porque se você não utilizalos as mensagens de erros não serão mostradas. Você também pode colocar onclick e onkeypress neles: $form->input('campo', array('onclick' => 'teste()', 'onkeypress' => 'test2()'); Olá amigominha versão é 1.2.5 enquanto ao utilizar o form helper eu utilizei e nao exibiu a mensagem e tentou cadastrar. Muito obrigado pela ajuda com o onkeypress =D To malucao com issu. Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Janeiro 16, 2010 Vamos ver se conseguimos ver onde está o problema. Ponhe isso em seu Model (que tem validação). function beforeValidate(){ if($this->validates()) echo 'Validou!'; else echo 'Não validou!'; } Agora tente inserir algum registro neste model "quebrando" alguma validação e veja o que é exibido e insera uma vez tudo corretamente (passando da validação). Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 20, 2010 Amigao desculpa a demora Agora ta dando erro O Internet Explorer não pode exibir a página da Web to ficando maluco com issu amigo Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Janeiro 25, 2010 Amigao desculpa a demora Agora ta dando erro O Internet Explorer não pode exibir a página da Web to ficando maluco com issu amigo Ainda to com o problema to tentando mas a validação nao sai de jeito nenhumabraços Compartilhar este post Link para o post Compartilhar em outros sites