LACRIMAL 2 Denunciar post Postado Agosto 19, 2010 preciso validar os campos de um fomulario (destinado a tabela cmt_blogs) que esta "ligada" a tabela blogs. tentei mas não consegui =/ o model blog.php <?php class Blog extends AppModel { var $name = 'Blog'; // JOIN MODO PADRÃO var $belongsTo = array('atr_blogs' => array('className' => 'AtrBlog', 'foreignKey' => 'atr_blogs_id')); var $hasMany = array('img_blogs' => array( // interliga com a tabela de imagens do blog 'className' => 'ImgBlog', 'order' => '`img_blogs`.`blog_id` DESC'), 'cmt_blogs' => array( // interliga com a tabela de cometarios do blog 'className' => 'CmtBlog', 'conditions' => 'mostrar = "s"', 'order' => 'data_hora DESC'), 'cat_blogs' => array( // interliga com a tabela de categorias do blog 'className' => 'CatBlog', 'order' => 'categoria DESC')); var $validate = array( 'autor' => array('minLength' => array('rule' => array('minLength', '4'), 'message' => 'min. de 4 caractéres'), 'notEmpty' => array('rule' => 'notEmpty', 'message' => 'este campo é obrigatório')), 'email' => array('email' => array('rule' => 'email', 'message' => 'email inválido'), 'notEmpty' => array('rule' => 'notEmpty', 'message' => 'este campo é obrigatório')), 'link' => array('url' => array('rule' => 'url', 'message' => 'link inválido')) ); } ?> o form: <?php $para = array('controller' => 'blog', 'action' => "post/".$dado["Blog"]["titulo"]); echo $form->create('cmt_blogs' , array('url' => $para)); echo '<span style="float:left;">'; echo $form->input('cmt_blogs.autor'); echo $form->input('cmt_blogs.email'); echo $form->input('cmt_blogs.link'); echo '</span> <span style="float:left;">'; echo $form->textarea('cmt_blogs.comentario'); echo $form->submit('/'); echo '</span>'; ?> na hora de validar os dados no blog_controller.php eu tentei: $this->Blog->validates() e $this->Blog->cmt_blogs->validates() não funcionou! o que estou fazendo errado (ou não estou fazendo)? obrigado Compartilhar este post Link para o post Compartilhar em outros sites
netShot 1 Denunciar post Postado Agosto 19, 2010 Na regra de validação, model: var $validate = array( 'autor' => array( 'notEmpty' => array( 'rule' => 'notEmpty', 'message' => 'Não permitido campo em branco' ), 'minlength' => array( 'rule' => array('minLength', '4'), 'message' => 'Mínimo de 4 caracteres' ), )); No controller: $this->Blog->set( $this->data ); // Sem essa linha não faz a validação ( http://book.cakephp.org/pt/view/410/Validating-Data-from-the-Controller ) if ($this->Blog->validates()) { // lógica de validado } else { // lógica de não validado } Compartilhar este post Link para o post Compartilhar em outros sites
LACRIMAL 2 Denunciar post Postado Agosto 19, 2010 Na regra de validação, model: var $validate = array( 'autor' => array( 'notEmpty' => array( 'rule' => 'notEmpty', 'message' => 'Não permitido campo em branco' ), 'minlength' => array( 'rule' => array('minLength', '4'), 'message' => 'Mínimo de 4 caracteres' ), )); No controller: $this->Blog->set( $this->data ); // Sem essa linha não faz a validação ( http://book.cakephp.org/pt/view/410/Validating-Data-from-the-Controller ) if ($this->Blog->validates()) { // lógica de validado } else { // lógica de não validado } já tem isso... e mesmo assim não funciona. Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Agosto 20, 2010 Se os campos pertencem à um model chamado cmt_blogs, as regras de validação devem estar neste model, não no relacionado. Compartilhar este post Link para o post Compartilhar em outros sites
LACRIMAL 2 Denunciar post Postado Agosto 25, 2010 Se os campos pertencem à um model chamado cmt_blogs, as regras de validação devem estar neste model, não no relacionado. Coloquei as regras nos dois models, e não funciona =/ o model cmt_blogs: <?php class CmtBlog extends AppModel { var $name = 'CmtBlog'; var $validate = array( 'autor' => array('minLength' => array('rule' => array('minLength', '4'), 'message' => 'min. de 4 caractéres'), 'notEmpty' => array('rule' => 'notEmpty', 'message' => 'este campo é obrigatório')), 'email' => array('email' => array('rule' => 'email', 'message' => 'email inválido'), 'notEmpty' => array('rule' => 'notEmpty', 'message' => 'este campo é obrigatório')), 'link' => array('url' => array('rule' => 'url', 'message' => 'link inválido')) ); } } ?> alguem ? =/ Compartilhar este post Link para o post Compartilhar em outros sites
netShot 1 Denunciar post Postado Agosto 25, 2010 Bem, fazendo os testes por aqui, vamos lá: Exemplo básico: models/post.php <?php class Post extends AppModel { var $name = 'Post'; var $primaryKey = 'id'; var $hasMany = array( 'Comment' => array( 'className' => 'Comment', 'foreignKey' => 'post_id', 'depend' => true ) ); var $validate = array( 'autor' => array( 'notEmpty' => array( 'rule' => 'notEmpty', 'message' => 'Não permitido campo em branco' ), 'minlength' => array( 'rule' => array('minLength', '4'), 'message' => 'Mínimo de 4 caracteres' ), )); } PS: preciso sair, daqui a pouco termino do postar.. beleza? Compartilhar este post Link para o post Compartilhar em outros sites
netShot 1 Denunciar post Postado Agosto 25, 2010 Como não consegui editar, segue a continuação: models/comment.php <?php class Comment extends AppModel { var $name = 'Comment'; var $primaryKey = 'id'; var $belongsTo = array( 'Post' => array( 'className' => 'Post', 'foreignKey'=> 'post_id' )); var $validate = array( 'email' => array( 'rule' => 'email', 'message' => 'Não permitido campo em branco') ); } controllers/posts_controller.php <?php class PostsController extends AppController { var $name = 'Posts'; function index() { $this->redirect(array( 'action' => 'add')); } function add() { if( !empty($this->data) ){ $this->Post->set( $this->data ); // Sem essa linha não faz a validação ( http://book.cakephp.org/pt/view/410/Validating-Data-from-the-Controller ) if ( $this->Post->saveAll($this->data, array('validate' => 'first')) ) { echo 'Dados válidos'; } else { echo 'Dados inválidos'; } } } } views/posts/add.ctp <?php echo $form->create('Post', array('action' => 'add')); echo $form->input('Post.titulo', array('label'=>'Titulo')); echo $form->input('Post.conteudo'); echo $form->input('Post.autor'); echo $form->input('Comment.0.comentario', array('label'=>'Comentarios')); echo $form->input('Comment.0.email'); echo $form->end('Add'); ?> Abaixo a demonstração do código em ação: Compartilhar este post Link para o post Compartilhar em outros sites
LACRIMAL 2 Denunciar post Postado Agosto 26, 2010 netShot a validação em si deu certo ^_^ , mas quando o formulário é enviado vazio, aparece a seguinte mensagem: Warning (2): preg_match() expects parameter 2 to be string, array given [CORE\cake\libs\validation.php, line 889] Notice (8): Array to string conversion [CORE\cake\libs\validation.php, line 615] o que pode ser ? valeu =) Compartilhar este post Link para o post Compartilhar em outros sites
netShot 1 Denunciar post Postado Agosto 26, 2010 Vamos partir do principio, assim, poderemos dar uma avaliada melhor. 1º Qual a versão do PHP? 2º Qual a versão do cakePHP? 3º Qual o código usado que da este erro? O código acima e a imagem, é de um formulário vazio, por isso as perguntas acima. :) Compartilhar este post Link para o post Compartilhar em outros sites
LACRIMAL 2 Denunciar post Postado Agosto 26, 2010 Vamos partir do principio, assim, poderemos dar uma avaliada melhor. 1º Qual a versão do PHP? 2º Qual a versão do cakePHP? 3º Qual o código usado que da este erro? O código acima e a imagem, é de um formulário vazio, por isso as perguntas acima. :) O erro parou de aparecer (deve ter sido alguma alteração errada que fiz). Mais uma última coisa hehe É possivel validar textarea ? Procurei algumas coisas no google, mas não encontrei muita coisa ;( Obrigado pela ajuda cara :D Compartilhar este post Link para o post Compartilhar em outros sites
netShot 1 Denunciar post Postado Agosto 27, 2010 Vamos partir do principio, assim, poderemos dar uma avaliada melhor. 1º Qual a versão do PHP? 2º Qual a versão do cakePHP? 3º Qual o código usado que da este erro? O código acima e a imagem, é de um formulário vazio, por isso as perguntas acima. :) O erro parou de aparecer (deve ter sido alguma alteração errada que fiz). Mais uma última coisa hehe É possivel validar textarea ? Procurei algumas coisas no google, mas não encontrei muita coisa ;( Obrigado pela ajuda cara :D O que exatamente você quer validar nele? Depende do controle que você quer ter sobre ele, seja um pouco mais especifico xD Compartilhar este post Link para o post Compartilhar em outros sites
LACRIMAL 2 Denunciar post Postado Agosto 27, 2010 filtrar algumas palavras :D Compartilhar este post Link para o post Compartilhar em outros sites