возможно ли в Laravel 5 проверить несколько Запросов, чтобы вставить связанные модели после отправки формы?
Я знаю, как проверять несколько моделей с помощью Validators, но я хочу сделать это с помощью класса запросов.
$validateUser = Validator::make(Input::all(), User::$rules); $validateRole = Validator::make(Input::all(), Role::$rules); if ($validateUser->fails() || $validateRole->fails()){ $validationMessages = array_merge_recursive( $validateUser->messages()->toArray(), $validateRole->messages()->toArray() ); }
Запросите один
class CreateUserRequest extends Request { public function rules() { // } }
Запросите два
class CreateRoleRequest extends Request { public function rules() { // } }
Вызов модели контроллера:
public function store(CreateUserRequest $request, CreateRoleRequest $request2) { // }
Как я могу проверить входные значения пользователя и значения ввода роли с помощью подхода «Запрос»? (и иметь конкретную обратную связь, если проверка не завершена)
Во-первых, использование нескольких классов запросов формы отлично работает.
Теперь, конечно, вы не можете просто иметь две формы в одном. Однако для разделения данных вы можете использовать синтаксис массива для имен полей:
<input type="text" name="user[name]" /> <!-- and later --> <input type="text" name="role[name]" />
В ваших правилах проверки вы можете использовать синтаксис точек для ссылки на имя пользователя или имя роли:
public function rules(){ return [ 'role.name' => 'required' ]; }
И для создания двух моделей просто используйте это, чтобы получить все атрибуты для user
и role
:
$request->input('user'); // returns an array like ['name' => 'foo', 'other-user-field' => 'bar'] $request->input('role'); // returns an array like ['name' => 'baz', 'other-role-field' => 'boom']