【问题标题】:Laravel 4: Pass validation messages obtained from repository to controllerLaravel 4:将从存储库获得的验证消息传递给控制器
【发布时间】:2013-10-05 02:13:42
【问题描述】:

了解 Ioc 和存储库并卡在最后一个障碍!

假设我正在验证输入,如何将消息从存储库中的验证器传递回控制器?

用户存储库

interface UserRepository {
    public function all();
    public function create($input);
    public function findById($id);
}

Sentry2UserRepository

class Sentry2UserRepository implements UserRepository {
...
public function create($input) {
        $validation = Validator::make($input, User::$rules);
        if ($validation->passes()) {
    Sentry::createUser( array_except( $input, ['password_confirmation']));

            // Put something here to tell controller that user has been successfully been created
            return true;
        }
        else {
            // pass back to controller that validation has failed
            // with messages
            return $validation->messages(); ?????     
        }       
...

我的用户控制器

UserController extends BaseController {
    ...
    public function postRegister() {
    $input['first_name'] = Input::get('first_name');
    $input['last_name'] = Input::get('last_name');
    $input['email'] = Input::get('email');
    $input['password'] = Input::get('password');
    $input['password_confirmation'] = Input::get('password_confirmation');


        // Something like
        if ($this->user->create($input)) {
            Session::flash('success', 'Successfully registered');
            return Redirect::to('/');
        }
        else {
            Session::flash('error', 'There were errors in your submission');
            return Redirect::to('user/login')->withErrors()->withInput();
        }
    }
    ...
}

Laravel 才 1.5 周,所以请放轻松。

【问题讨论】:

    标签: php validation laravel inversion-of-control laravel-4


    【解决方案1】:

    假设您的存储库已经可以正常运行:

    class Sentry2UserRepository implements UserRepository {
        public $validation;
    
        public function create($input) {
                $this->validation = Validator::make($input, User::$rules);
                if ($this->validation->passes()) {
                    Sentry::createUser( array_except( $input, ['password_confirmation']));
    
                    // Put something here to tell controller that user has been successfully been created
                    return true;
                }
                else {
                    // pass back to controller that validation has failed
                    // with messages
                    return false;     
                }
        }     
    
    }
    

    然后你只需要在你的控制器中使用它来访问它

    $this->user->validation->messages()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多