2010-07-20 2 views
9

Мой JQuery код:Как использовать jquery.validate плагин в виде CakePHP

$(document).ready(function(){ 
    $('#StudentRegisterForm').validate({   
    rules: { 
     email: { 
     required:true, 
     email:true 
     } 
    } 
    });  
}); 

и в моей форме по электронной почте:

<td><?php echo $form->input('email',array('class required email')); ?></td> 

Проблема заключается в JQuery Validate плагин работает на атрибут поля ввода 'name', но cakephp называет его data[Student][email]. Если я использую это имя в jquery, то он выдаст ошибку. Если я переименую поле в cakephp, значение электронной почты не будет передано в базу данных. Есть ли какой-нибудь другой раунд?

+0

Только незначительная опечатка в вашем примере. Вы хотите, чтобы класс был массивом. '' class '=> array (' required ',' email ') 'for correctness;) –

+0

для меня его не работает, но это работает input (' email ', array (' class ' => 'требуемый адрес электронной почты')); ?> – chinni776

ответ

15

Вам нужно просто нужно незначительные настройки, установить правило, используя строку, например:

$(function(){ //short for $(document).ready(function(){ 
    $('#RegisterForm').validate({ 
    rules: { 
     "data[Student][email]": { 
      required:true, 
      email:true 
     } 
    } 
    }); 
}); 
+0

Я не мог заставить это работать, но я не думал приводить имя! +1 – Leo

+0

@ nick я попробую это сейчас – chinni776

+0

да это работает thanx – chinni776

1

вчера у меня была именно эта проблема. Ответ на «силу» имя на поле ввода, например:

echo $form->input('cheque_number',array('name'=>'InvoiceChequeNumber','value'=>'')); 

Я провел некоторое время, пытаясь не делать этого, но я не мог найти какой-либо альтернативы. Для CakePHP нет проблем, когда вы делаете это так.

0

Первый лучше использовать, потому что это будет поддерживать торт this->data structure, но второй нет. Это, чтобы напомнить, что, когда вы будете использовать data[modelname][fieldname] дать имя класса на входе Арай как:

<?php echo $form->input('email',array('type'=>'text','class' => array('required','email'),'error'=>false,'label'=>false,'div'=>false)); ?> 
+2

Первое что? – BoltClock

Смежные вопросы