Сперва создадим саму форму. Будем использовать уже готовый файл подшаблона из resourses/views, файл home.blade.php.
Верстка формы:
<form action='addroom' method='post' id="form-addroom">
{{csrf_field()}}
<input autofocus type="text" class="enter-room" name='name' id="addroom" onkeypress="Press(this.value, event)">
<input class="enter-button" type="submit" value="Ввод" id="enter">
</form>
Используется метод POST, который предназначн для принятия данных сервером.
Функция csrf_field() генерирует:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
Эта функция проверяет совпадение токенов: входящих и хранящихся на сервере.
Модель
К форме создаются модели. Это делается создается командой “php artisan make:model Rooms” в консоли сервера. Созданный файл модели хранится в каталоге app. В модели необходимо прописать значение $fillable, в программе это выглядит так:
protected $fillable=[
'user_id',
'name',
'showhile'
];
После чего командой php artisan migrate отправляем созданную модель в базу данных.
Безопасность формы
Для обеспечения безопасности формы и добавления правил её заполнения необходимо создать Request. Это делается командой
php artisan make:request RoomRequest
После прописи этой команды в app/Http/Requests будет создан новый Request RoomRequest.php.
В методе authorize значение false заменим на true,- включение проверки пользователя, далее добавляем метод правил, в котором сразу добавляется новое правило ввода имени, проверяющее длину имени новой комнаты (нельзя добавить комнату с пустым именем либо с именем из 1 символа). Этот метод выглядит так:
public function rules()
{
return [
'name' => 'required|min:2'
];
}
Контроллер
Чтобы обабатывать форму нужно также создать контроллер. Можно создать новый командой php artisan make:controller NameofController, но в проекте уже существует ранее созданный контроллер RoomController, отвечающий за перенаправление между комнатами, в который мы добавим метод postIndex, обрабатывающий форму.
public function postIndex(Requests\RoomRequest $r){
$r['user_id']=Auth::user()->id;
Room::create($r->all());
return redirect('/rooms');
}
В данном методе проводится проверка авторизации пользователя, а также производится запись в базу данных о новой комнате, после чего пользователь перенаправляется на страницу списка комнат. В методе присутствует параметр Requests\RoomRequest $r, тем самым обеспечивая связь созданного контроллера с Request’ом
Маршрутизация
Маршрутизация отвечает за связь между формой и контроллеров. А за маршрутизацию в свою очередь отвечает файл routes в каталоге app/Http. В нее добавляется новый Route:
Route::post('/addroom','RoomController@postIndex');
Данный Route связывает обработку формы с методом postIndex контроллера RoomController. В итоге форма становится полностью рабочей.
Вывод
Все проделанные этапы позволяют создавать форму, методы
обработки, правила заполнения и связать ее с базой данных