2011-01-27 81 views
0
 
//creates a sfForm for the login 
    $this->form = new sfForm(); 
    $this->form->setWidgets(array(
    'email' => new sfWidgetFormInputText(array('default' => '[email protected]')), 
    'password' => new sfWidgetFormInputPassword() 
    ) 
); 

    //TODO: sfValidatorRegex on the password! 
    $this->form->setValidators(array(
    'email' => new sfValidatorEmail(), 
    'password' => new sfValidatorString(array(
    'min_length' => 8, 
    'max_length' => 255), 
    array(
    'min_length' => 'Password is too short. Minimum 8 characters required.') 
    ))); 

再經過我檢查了提交參數Symfony的表單驗證

 
if($this->form->isValid(){ 
    loginUser(); 
} 

要求它不事關密碼,或僞造的電子郵件,我把在多麼短,它失敗過。

回答

2

您並未將發佈數據綁定到表單。

你應該把你的表格放在一個單獨的文件中,我假設你把它放在lib/form/LoginForm.class.php

在窗體的configure()方法中創建名稱格式:$this->widgetSchema->setNameFormat("login[%s]")

你的行動代碼:

$this->form = new LoginForm(); 
if ($request->isMethod("post")) { 
    $this->form->bind($request->getParameter("login")); 
    if ($this->form->isValid()) { 
    //whatever 
    } 
} 

之前從頭開始創建一個身份驗證和授權系統,看看它的事實上的標準的symfony:sfDoctrineGuardPlugin。它也有一個推動版本,叫做sfGuardPlugin

+0

感謝您的回答,我會嘗試。 – Johannes 2011-01-27 14:12:00