Узнав о Ioc и Хранилищах и, наконец, застрял!
Предполагая, что я проверяю ввод данных, как мне передать сообщения от Validator в репозитории на контроллер?
UserRepository
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
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(); } } ... }
Только 1,5 недели в Ларавеле, поэтому, пожалуйста, успокойся.
Предполагая, что ваш репозиторий отлично работает для вас:
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()