2014-01-20 86 views
1

我正在使用Laravel,它看起來在他們決定在控制器內部實現驗證的例子中,我根本不喜歡它。我想問的是,如果有某種bind方法可以將發佈的輸入字段綁定到我創建的對象,以便我可以確保我的控制器不雜亂。從輸入表格中綁定模型

我會盡力解釋我想要的代碼,我認爲它會更清晰。

我有什麼

public function postRegister() { 
    $validation = Validator::make(Input::all(), array(
       'email' => 'required|email', 
       'password' => 'required|min:6', 
       'name' => 'required|alpha', 
       'gender' => 'required|in:male,female' 
    )); 

    if ($validation->fails()) { 
     Input::flashExcept('password'); 
     return Redirect::to('register')->withErrors($validation)->withInput(); 
    } 

    // Register user... 
} 

我想有什麼

class UserRegisterDto { 
    public $email; 
    public $password; 
    public $name; 
    public $gender; 

    protected $errors; 

    public function isValid() { 
     // Validate it here, set errors if there are some 
     return $validator->isValid(); 
    } 

    public function getErrors() { 
     return $this->errors; 
    } 
} 

public function postRegister() { 
    $user = Input::bind('UserRegisterDto'); // This is made-up function, I wonder if something like this exists 

    if ($user->isValid()) { 
     // Register user... 
    } 
} 

回答

0

殷切可以幫助你保持控制器清潔:https://github.com/laravelbook/ardent

「殷切車型使用Laravel內置的驗證類爲模型定義驗證規則很簡單,通常在您的模型類中作爲靜態變量完成「

+0

嗯,看起來不錯,但我很困惑'保存'功能。如果(和我的情況是這樣)如果我使用自定義存儲庫來保存它,因爲我沒有使用MySql但Cassandra? – sed

+0

我不知道,對不起。我用它與MySQL。 – chris342423