Ir para conteúdo

POWERED BY:

Arquivado

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

kakaroto developer

[Resolvido] formulario não esta validado os campos do formul

Recommended Posts

Ola gente mais uma vez eu perturbando a galera no forum

 

eu olhei o manual :(

e nada de achar o erro

 

// meu model 
<?

<?

class Cidade extends AppModel {
  var $name = "cidade"; //para tornar o script compinatível com php4
  var $displayField ="cidade";

var $validate = array(
   'cidade' => array(
       'rule' => array('minLength', '8'),
       'message' => 'Nomes da cidade deve possuir no mínimo 8 caracteres.'
   )
);





}

?>







 

 

meu controller cidade

 


<?
class CidadesController extends AppController {


               var $name = "Cidades";
              // var $scaffold;
               var $helpers = array('Html', 'Form','Javascript','Session');  // carregamos alguns helpers


               var $paginate = array('limit' => 2, 'page' => 1, 'order'=>array('id'=>'asc'));
       // aqui definimos o limite de resultados por página, e a ordem da paginação

          function index()

          {
        //  print_r($this->Session->read('Usuario'));

             //$this->Controller->_Usuario;
               $this->Categoria->recursive = 0;
               $this->set('cidades', $this->paginate());
               // com este comando, geramos a paginação para página index


       }








  function incluir($id = null){


// Se tiver dados em $this->data, salvamos estes dados
if(!empty($this->data)){



    $this->Cidade->save($this->data,$id);

    $this->Session->setFlash('Cadastrado Efetuado com sucesso','flash_good');
    $this->Session->setFlash('Cadastro Efetuado com sucesso.');



    $this->redirect('/cidades');
    // aqui em embaixo eu faço um redirect para pagina de cidades :)


}
 }






       }


       ?>

 

 

minha view cidade

 

<?
// Incluir o jQuery ao projeto
// Neste exemplo estou importando a jquery
// O segundo parâmetro (false) é para indicar que vai no <head> e não no local onde está sendo executado
//Com isso, você faz que o código javascript vá para o <head> do seu HTML e
//não fique no meio das suas views, o que é deselegante e fora do padrão W3C :) fresco.

echo  $javascript->link( 'jquery' , false );
echo  $javascript->link( 'funcao' , false );
echo $html->css('alerta',false);




?>




<h1> Cadastre Uma Nova Cidade</h1>

<?php



// Para onde o formulário submeterá



echo $form->create('Cidade', array('url' => 'incluir'));
echo $form->input('cidades');








echo '<br/><br/>';

echo '<input type="submit" id="enviar" value="cadastrar cidade"/> </form>';

?>


 

dessa vez aonde eu errei :(

e o formulario cadastrar vazio e tudo

 

minha base de dados e simples

 

cidades

id

cidade

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que está acontecendo? Não está salvando? Ou só cadastra em branco?

Troque isso:

echo $form->create('Cidade', array('url' => 'incluir'));
Por isso: (deste modo, o caminho ficará relativo, e evitará problemas de path futuramente)

echo $form->create('Cidade', array('url' => array('controller' => 'cidades', 'action' => 'incluir')));
Se você já estiver em cidades, basta:

echo $form->create('Cidade', array('url' => array('action' => 'incluir')));

 

Troque isso:

echo '<input type="submit" id="enviar" value="cadastrar cidade"/> </form>';
Por isso:

$form->end('cadastrar cidade');
Ou: (para CakePHP 1.26+)

$this->Form->end('cadastrar cidade');

 

Troque isso:

$this->Cidade->save($this->data,$id);
Por isso: (o segundo parametro de save não é o ID e sim um BOOL pra saber se é pra validar os dados ou não - provavelmente por isso não estava validando)

$this->Cidade->id = $id;
$this->Cidade->save($this->data);

Estas são apenas algumas observações. Talvez não resolvam o problema.

 

Algo que pode ajudar a pesquisar sobre os métodos/atributos: http://api12.cakephp.org/ ou http://api13.cakephp.org/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente não está validando porque não tem nada para validar.

No seu model você colocar para validar 'cidade', mas você só tem esta entrada no formulário (perceba o "s")

echo $form->input('cidades');
Então não há nada pra validar. (tente retirar o redirect - apenas para teste - lembro de um membro que tevo problemas devido a isso)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente não está validando porque não tem nada para validar.

No seu model você colocar para validar 'cidade', mas você só tem esta entrada no formulário (perceba o "s")

echo $form->input('cidades');
Então não há nada pra validar. (tente retirar o redirect - apenas para teste - lembro de um membro que tevo problemas devido a isso)

 

eu li o topico dele tambem :)

vou testar sem o redirect para ver e posto o result para você :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

tente fazer com meu codigo,

já tive muito problema com validação,

problema muitos estranhos =D

 

Obs :

Refassa sua Tabela no banco

para os seguintes campos

 

nome da tabela: cidades

campos:

id (int)

nome (varchar) maior ou igual a 8

 

//Model

<?
//Model
class Cidade extends AppModel{
	var $name = "Cidade";
	
	var $validade = array(
		'cidade'=>array(
			'min'=>array(
				'rule'=>array('minLength',8),
				'required'=>true,
				'message'=>'Minimo de 8 caracteres'
			)
		)
	);

}
?>

//controller

<?
//Controller
class CidadesController extends AppController{
	var $name = "Cidades";
	var $helpers = array('Form','Html','Javascript','Session');
	var $paginate = array('Cidade' =>array(
        /*'fields' => array('Cidade.id','Cidade.nome'), //campos a paginar*/
        'limit' => 10,        
        'order' => array(
            'Cidade.id' => 'asc'
        	)
		)
    );
	
	
/*
Funcao para add cidades
*/
function incluir(){
	$this->pageTitle = "Add Cidade";
	
	if(!empty($this->data)){
		if($this->Cidade->save($this->data)){
			$this->Session->setFlash('Add Sucess!!!');
			$this->redirect('/cidades/incluir');
		}else{
			$this->Session->setFlash('Error!!!');
		}
	
	}
}

}
?>

//view

<?
//view
echo $form->create('Cidade',array('action'=>'incluir'));
echo $form->input('nome');
echo $form->end('Add');
?>

caso esteja algo errado dispulpe pois fiz na correria. Sua tabela nao tem chave estrangeira não né?

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza meu velho vou testar a sua solução e ja posto o resultado

 

vlw :)

 

eita meus amigos nada

 

parece que a validacao no exist "$validade"

 

ele inserir vazios e tudo

 

se eu mando o formulario com conteudo ele insere no banco :(

 

meu debug


Array
(
   [Cidade] => Array
       (
           [nome] => validar
       )

)


Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe

 

troque no Model

 

$validade por $validate

 

 

você refez seu banco?

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim eu coloquei como você postou para eu trocar os campos

 

meu model esta assim

 


<?

class Cidade extends AppModel {
  var $name = "cidade"; //para tornar o script compinatível com php4
  var $displayField ="cidade";

var $validate = array(
               'nome'=>array(
                       'min'=>array(
                               'rule'=>array('minLength',8),
                               'required'=>true,
                               'message'=>'Minimo de 8 caracteres'
                       )
               )
       );






}

?>

 

minha view incluir esta assim

 


<?
// Incluir o jQuery ao projeto
// Neste exemplo estou importando a jquery
// O segundo parâmetro (false) é para indicar que vai no <head> e não no local onde está sendo executado
//Com isso, você faz que o código javascript vá para o <head> do seu HTML e
//não fique no meio das suas views, o que é deselegante e fora do padrão W3C :) fresco.

echo  $javascript->link( 'jquery' , false );
echo  $javascript->link( 'funcao' , false );
echo $html->css('alerta',false);
//echo $this->renderElement('tinymce',array('preset' => 'basic'));
// isso e para chamar o editor :)



?>




<h1> Cadastre Uma Nova Cidade</h1>

<?php



// Para onde o formulário submeterá


echo $form->create('Cidade',array('action'=>'incluir'));


echo $form->input('nome');



echo '<br/><br/>';
// echo $form->textarea('descricao');
  //chamando um textarea
echo $form->end('cadastrar cidade');


?>

 

meu controler esta assim


 function incluir($id = null){


// Se tiver dados em $this->data, salvamos estes dados
if(!empty($this->data)){
$this->Cidade->id = $id;


  $this->Cidade->save($this->data,$id);

    $this->Session->setFlash('Cadastrado Efetuado com sucesso','flash_good');




 $this->redirect('/cidades');
    // aqui em embaixo eu faço um redirect para pagina de cidades :)


}
 }

 

ta assim o meu script :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBS:

1 - QUal o motivo de você setar o id? $this->Model->id = $id??

issu é valido para UPDATE, para inserir um novo registro deixe sem

 

2 - seu $this->Cidade->save($this->data,$id); Errado

 

deve estar assim $this->Cidade->save($this->data);

 

3 - Faça o seu controller igual eu postei la em cima

 

4 - Model - $name = "Cidade" não cidade

 

5 - retire o display field

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBS:

1 - QUal o motivo de você setar o id? $this->Model->id = $id??

issu é valido para UPDATE, para inserir um novo registro deixe sem

 

2 - seu $this->Cidade->save($this->data,$id); Errado

 

deve estar assim $this->Cidade->save($this->data);

 

3 - Faça o seu controller igual eu postei la em cima

 

4 - Model - $name = "Cidade" não cidade

 

5 - retire o display field

 

vou testar essa solucao aqui

 

 

 

http://bakery.cakephp.org/articles/view/improved-advance-validation-with-parameters

 

se esse valida certinho eu posto o resultado senao eu piro aqui :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa meu velho

sabe aquele link que eu mostrei

foi so eu baixar a classe la :)

 

e colocar dentro de app/model

e salvar com o nome de app_model.php

 

dentro do model ficou assim

<?

class Cidade extends AppModel {
  var $name = "Cidade"; //para tornar o script compinatível com php4
  var $displayField ="cidade";


 function loadValidation(){

 $this->validate = array(

        'cidade' => array(
        'required' => array(
        'method' => VALID_NOT_EMPTY,
        'message' => 'Entre com  a cidade por favor.'
       )
       )
       );


  }

}

?>

 

dentro do meu controller eu coloque assim


  function incluir($id = null){



if(!empty($this->data)){
// Se tiver dados em $this->data, salvamos estes dados


if($this->Cidade->save($this->data)) {
// sei foi possivel salvar ganhar o aviso e um redirect :)

   $this->Session->setFlash('Cadastrado Efetuado com sucesso','flash_good');
   $this->redirect('/cidades');
    // aqui em embaixo eu faço um redirect para pagina de cidades :)
}

}
 }

 

 

espero que minha postagem com a solucao ajude outros na duvida com validacao de formulario

 

um abraço a todos que me apoiaram na postagem e espero geral na minha postagem de hj :)

sobre multriplo upload de fotos com cake :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok.

Só uma sugestão. Retire estes tipos de método "VALID_NOT_EMPTY", isso já foi removido da ultima versão (obsoleto). Procure por validações cakephp no google para ver como se faz, atualmente.

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.