Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 eecho $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
Ola lucas
eu fiz todas as alteraçoes que você falou
mais o formulario nao esta validado o campo
se eu nao colocar algo ele dar o o insert
no banco
ou seja ele inserir mesmo se eu não colocar a categoria :(
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)
>
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ê :)
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
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
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
)
)desculpe
troque no Model
$validade por $validate
você refez seu banco?
abraços
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 eecho $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 :(
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
>
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 :)
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 :)
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.
ola lucas bom dia eu fiz a pesquisa que você me falou
e nao achei nada em especial você tem algum link em especial que você viu
mais mesmo assim obrigado pelo apoio
;)
A documentação: http://book.cakephp.org/pt/view/127/One-Rule-Per-Field
>
A documentação: http://book.cakephp.org/pt/view/127/One-Rule-Per-Field
a ta eu pensei que era um modelo diferente de validar ,mais eu nao saio desse site meu velho :P
Eu pensei que era um classe nova de validacao :) mais valeu o link
obrigado
topico encerrado :)
O que está acontecendo? Não está salvando? Ou só cadastra em branco?
Troque isso:
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:
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/