@webfln

Почему Laravel 5.3 не хочет показывать ошибки валидации?

Изучаю Laravel. Сейчас разбираю тему с валидацией данных и у меня не получается вывести ошибки.

Я создал класс запроса:
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ContactRequest 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',
        ];
    }

    public function messages()
    {
       return [
            'name.required' => 'Er, you forgot your name!',
       ];
    }
}


Так же создал контроллер, для страницы.

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Requests\ContactRequest;
use App\Http\Controllers\Controller;

use Validator;


class ContactController extends Controller
{
   
    public function store(ContactRequest $request) {
        
        return view('default.contact',['title'=>'Contacts']);
    }
    

    public function show()
    {
        return view('default.contact',['title'=>'Contacts']);
    }

}


Так же добавил нужные провайдеры в свойство $middleware

protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    ];


Создал 2 роутера:
Route::get('/contact',['uses'=>'Admin\ContactController@show','as'=>'contact']);
Route::post('/contact',['uses'=>'Admin\ContactController@store']);


(Пробывал так же объединять их в группу middleware => web (тоже не помогло))

Сама форма выглядет так:

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

    <div class="form-area">  
        <form method="post" action="{{ route('contact') }}">
        {{ csrf_field() }}

    				<div class="form-group">
						<input type="text" class="form-control" value="{{ old('name') }}" id="name" name="name" placeholder="Name">
					</div>

					<div class="form-group">
						<input type="text" class="form-control" value="{{ old('email') }}" id="email" name="email" placeholder="Email">
					</div>

					<div class="form-group">
						<input type="text" class="form-control" value="{{ old('site') }}" id="site" name="site" placeholder="site">
					</div>

                    <div class="form-group">
                    <textarea class="form-control" type="textarea" name="text" id="message" placeholder="Message" maxlength="140" rows="7">{{ old('text') }}</textarea>
                        <span class="help-block"><p id="characterLeft" class="help-block ">You have reached the limit</p></span>                    
                    </div>
            
       			 <input type="submit" id="submit" name="submit" class="btn btn-primary">
        </form>
    </div>


Но в итоге, при отправке формы, сообщения об ошибках не выводятся. Подскажите пожалуйста куда копать? Спасибо.
  • Вопрос задан
  • 959 просмотров
Решения вопроса 1
@webfln Автор вопроса
В общем спасибо Arik за помощью. Проблема заключалась в создании сессии с нуля. Именно поэтому ошибки и не отображались. Решил проблему сносом фреймворка и установкой с чистого листа.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
abler98
@abler98
Software Engineer
https://github.com/laravel/framework/blob/5.3/src/...
https://github.com/laravel/framework/blob/5.3/src/...

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->messages() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы