我有这个问题,当我加载表单时,验证消息出现在页面的第一个加载中,我不知道为什么.. 这是我的行动 如果第一个加载动作来自Get not a Post ..我很困惑......
public function inscriptionAction() {
$form = new Application_Form_Inscription ();
$form->submit->setLabel ( 'Inscription' );
$this->view->form = $form;
if ($this->getRequest ()->isPost ()) {
$formData = $this->getRequest ()->getPost ();
if ($form->isValid ( $formData )) {
// ton form est valide
// => enregistrement des données
// => redirection éventuelle
$nomU = $form->getValue ( 'nomU' );
$prenomU = $form->getValue ( 'prenomU' );
$mailU = $form->getValue ( 'mailU' );
$dateN = $form->getValue ( 'dateN' );
$civilite = $form->getValue ( 'civilite' );
$villeU = $form->getValue ( 'villeU' );
$passW = $form->getValue ( 'passW' );
$passw2 = $form->getValue ( 'repassW' );
$recevoirNews = ( int ) $form->getValue ( 'recevoirNews' );
$utilisateurs = new Application_Model_DbTable_Utilisateurs ();
$utilisateurs->ajouterUtilisateur ( $nomU, $prenomU, $mailU, $passW, $civilite, $dateN, $recevoirNews, $villeU );
$this->_helper->redirector ( 'index' );
} else {
// ton form est invalide
// réinjecte les valeurs saisies par l'user
// nouvel affichage du formulaire
$form->populate ( $formData );
}
} else {
// initialisation et 1er affichage du formulaire
}
}
谢谢
答案 0 :(得分:0)
通过GET在页面上首次加载表单没有错。
也许在最后一个块(“// initialisation et 1er affichage du formulaire”)中有一些东西触发了验证?
我通常的表单生成/显示/提交流程没有明确调用$form->populate($formData)
;对$form->isValid($formData)
的调用对我来说就是这样。
我的流程通常如下:
public function myAction()
{
$form = new My_Form();
$form->setDefaults(array(
// any defaults I need to set
));
if ($this->_request->isPost()){
if ($form->isValid($this->_request->getPost()){
$formData = $form->getValues();
// now write the data
}
}
$this->view->form = $form;
}