Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 05.01.2018 13:12:11

FormRequest

Создал класс командой php artisan make:request RegisterRequest,
заполнил его правилами валидации, в контроллере прописал

public function store(\App\Http\Requests\RegisterRequest $request)//метод обрабатывает прилетающий POST от юзера
{...}

пытался уже и полное имя класса указывать и сокращенное и c использованием use (в начале файла) и без - все равно мне выдает ошибку

Class App\Http\Requests\RegisterRequest does not exist

Файл есть. Путь правильный.
В чем может быть загвоздка?

Не в сети

#2 05.01.2018 13:18:45

Не в сети

#3 05.01.2018 13:27:13

Re: FormRequest

Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Package manifest generated successfully.



На проблему не повлияло.

Не в сети

#4 05.01.2018 13:31:50

Re: FormRequest

Благодарю за помощь, нашел проблему - досадная опечатка - точка с запятой в правилах валидации затесалась...

Не в сети

#5 05.01.2018 16:06:31

Re: FormRequest

После удаления лишней ; ошибка перестала вылетать, но работать как надо все равно не хочет - бился долго, не врубаюсь в чем проблема.
При отправке формы выдает 302 код (POST запрос).
При этом метод store контроллера не отрабатывает вообще (в самое начало метода вписывал функции-хелперы - никакой реакции). Данные на сервер улетают нормально (судя по отчету из браузера), а в ответ тишина - лишь перезагружается форма, которую отправлял.
Метод index контроллера отрабатывает нормально и отображает форму.
Данные отправляются валидные - буквенно-цифровой логин, пароль с подтверждением, мыло и чекбокс (согласен с правилами) + csrf-токен

302й ответ это нормально или нет? Мне кажется, что нет...
В какую сторону копать?

Не в сети

#6 05.01.2018 16:23:27

Re: FormRequest

В какую сторону копать?

Показывать код.

Не в сети

#7 05.01.2018 16:32:42

Re: FormRequest

форма:
<form action='http://localhost/project/public/register' method="POST" id="newform">
<input type="hidden" name="_token" value="ORh7Lek3iefjC4xz7txZumu4BWokPivosGjDKFHQ">
<input type="text" name="name" maxlength="16" value="">
<input type="password" name="password" maxlength="20" value="">
<input type="password" name="password_confirmation" maxlength="20" value="">
<input type="text" class="ok" name="email" maxlength="50" value="">
<input type="checkbox" name="rules">
<input type="submit" value="Зарегистрироваться">
</form>

web.php:

Route::resource('/register', 'RegisterController');

RegisterRequest.php:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class RegisterRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name'=>'required|alpha_dash|size:16|unique:users',
            'email'=>'required|email|unique:users',
            'password'=>'confirmed',
            'rules' => 'accepted'
        ];
    }
    
    public function messages()
    {
        return [
            'required' => 'Поле :attribute нужно заполнить!',
            'alpha_dash'=>'Поле :attribute должно состоять только из латинских букв, цифр, тире и знака подчеркивания!'
        ];
    }
}
<?php

namespace App\Http\Controllers;

use \App\Http\Requests\RegisterRequest as Register;

class RegisterController extends Controller
{
    public function store(Register $request)
    {
      exit('9');
    }
}

в метод вписал exit, дабы проверить работает ли он, но он не срабатывает - т.е. до этого места не доходит вообще

Изменено Evgnik85 (05.01.2018 16:34:15)

Не в сети

#8 05.01.2018 16:52:05

Re: FormRequest

Вопрос снимаю, сам дурак))
Нашел - я неправильно понял валидацию size - там должно быть ровно 16 символов

Как указать валидатору, что мне требуется строка  В ПРЕДЕЛАХ 16 символов?

between?

Изменено Evgnik85 (05.01.2018 16:53:47)

Не в сети

#9 05.01.2018 16:56:44

stsepelin
Откуда: Estonia
Сообщений: 43

Re: FormRequest

Нужно проверять поле на min: и max: или between

Изменено stsepelin (05.01.2018 16:58:05)

Не в сети

Подвал раздела