Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Создал класс командой php artisan make:request RegisterRequest,
заполнил его правилами валидации, в контроллере прописал
public function store(\App\Http\Requests\RegisterRequest $request)//метод обрабатывает прилетающий POST от юзера
{...}
пытался уже и полное имя класса указывать и сокращенное и c использованием use (в начале файла) и без - все равно мне выдает ошибку
Class App\Http\Requests\RegisterRequest does not exist
Файл есть. Путь правильный.
В чем может быть загвоздка?
Не в сети
Не в сети
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Package manifest generated successfully.
На проблему не повлияло.
Не в сети
Благодарю за помощь, нашел проблему - досадная опечатка - точка с запятой в правилах валидации затесалась...
Не в сети
После удаления лишней ; ошибка перестала вылетать, но работать как надо все равно не хочет - бился долго, не врубаюсь в чем проблема.
При отправке формы выдает 302 код (POST запрос).
При этом метод store контроллера не отрабатывает вообще (в самое начало метода вписывал функции-хелперы - никакой реакции). Данные на сервер улетают нормально (судя по отчету из браузера), а в ответ тишина - лишь перезагружается форма, которую отправлял.
Метод index контроллера отрабатывает нормально и отображает форму.
Данные отправляются валидные - буквенно-цифровой логин, пароль с подтверждением, мыло и чекбокс (согласен с правилами) + csrf-токен
302й ответ это нормально или нет? Мне кажется, что нет...
В какую сторону копать?
Не в сети
Не в сети
форма:
<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)
Не в сети
Вопрос снимаю, сам дурак))
Нашел - я неправильно понял валидацию size - там должно быть ровно 16 символов
Как указать валидатору, что мне требуется строка В ПРЕДЕЛАХ 16 символов?
between?
Изменено Evgnik85 (05.01.2018 16:53:47)
Не в сети
Нужно проверять поле на min: и max: или between
Изменено stsepelin (05.01.2018 16:58:05)
Не в сети
Страницы 1