Laravel 5.7.x Ошибки валидатора не отображаются в поле зрения - PullRequest
0 голосов
/ 01 ноября 2018

Я знаю, что этот вопрос задавался о более ранних версиях Laravel, но я использую 5.7.x (последнюю версию), и то, что работало в 5.2, может быть неприменимо в моем случае. По сути, я пытаюсь создать Форма публикации подтверждена пользовательским FormRequest. Вот мои исходные файлы.

post.create.blade.php

<html>
    @include('header')
    <body>
        <h1>Add a New Post</h1>

        {!! Form::open(['route' => 'save_post']) !!}
            <div class="form-group">
                {!! Form::label('name', 'Name:') !!}
                {!! Form::text('name', null) !!}
            </div>
            <div class="form-group">
                {!! Form::label('body', 'Body:') !!}
                {!! Form::textarea('body', null) !!}
            </div>
            {!! Form::submit('Create', ['class' => 'btn btn-info']) !!}
        {!! Form::close() !!}

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

web.php

Route::get('post/create', function () {
return view('post_create');
});

PostController.php

<?php
namespace App\Http\Controllers;
use App\Post;
use App\Http\Requests\PostCreateRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Validator;
class PostController extends Controller
{
    public function index()
    {
        return Post::paginate(1);
    }

    public function show($id)
    {
        return Post::find($id);
    }

    public function store(PostCreateRequest $request)
    {        
        $post = Post::create($request->all());
        $post->save();

        return response()->json($post, 201);
    }

    public function update(Request $request, $id)
    {
        $post = Post::findOrFail($id);
        $post->update($request->all());
        return response()->json($post, 200);
    }

    public function delete(Request $request, $id)
    {
        $post = Post::findOrFail($id);
        $post->delete();
        return response()->json(null, 204);
    }

PostCreateRequest.php

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Foundation\Validation\ValidatesRequests;
class PostCreateRequest 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|string|max:255',
            'body' => 'required|string|max:4096'
        ];
    }
}

Очевидно, что валидатор работает. Когда я заполняю имя и текст, он добавляет сообщение в базу данных SQL на серверной части. И когда это терпит неудачу, это возвращается к представлению пост создания. Проблема в том, что ошибки валидатора не отображаются в представлении, даже если я его закодировал. Что именно происходит? Есть ли какая-то ошибка в Laravel?

ОБНОВЛЕНИЕ: О, и если кому-то интересно, я использую Ubuntu. Некоторые источники предполагают, что раньше это имело значение. Я не уверен, что это все еще так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...