Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LACRIMAL

validar dados "especificos"

Recommended Posts

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

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

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

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

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

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:

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

 

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.