Проверка ошибок Laravel, возвращающая ноль - PullRequest
0 голосов
/ 11 мая 2018

Вчера я начал с Laravel, в настоящее время занят своим первым проектом, простой страницей новостей.

К сожалению, я столкнулся с некоторыми проблемами при проверке моего почтового запроса, я попытался найти в Google мою проблему. И я пытался использовать эти исправления, но, как ни странно, у меня ничего не получилось.

Проблема в том, что: Когда я публикую данные, нормальная «страница формы» будет показана без каких-либо ошибок. Я знаю, что у меня есть двойные сообщения об ошибках, это только для теста.

Чего я хочу достичь? Я хочу, чтобы ошибка валидации была показана

Image of page

routes.php

<?php

Route::group(['middleware' => ['web']], function() {

Route::get('/', function() {
    return redirect()->route('home');
});

Route::get('/home', [
    'as' => 'home',
    'uses' => 'HomeController@home',
]);

Route::get('/add_article', [
    'as' => 'add_article',
    'uses' => 'HomeController@add_article',
]);

Route::post('/add_article', [
    'as' => 'add_article.newarticle',
    'uses' => 'HomeController@post_article',
]);

});

HomeController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use App\News;

class HomeController extends Controller
{

public function home(News $news) 
{
    $articles = $news->orderBy('id','desc')->take(3)->get();
    return view('home.home')->with('articles', $articles);
}

public function add_article()
{
    return view('home.add_article');
}

public function post_article(Request $request)
{

    $this->validate($request, [
        'title' => 'required|max:64',
        'content' => 'required|max:2048',
    ]);

    // $newNews = new News;
    // $newNews->title = $request->title;
    // $newNews->content = $request->content;
    // $newNews->save();
}

}

add_article.blade.php

@extends('templates.default')

@section('content')
    <div class="row">
        <div class="col-sm-12 col-md-6 col-lg-6 col-xl-6 offset-md-3 offset-lg-3 offset-xl-3">
            <p class="lead">New news article</p>

            <div class="card">
                <div class="card-header">
                    <h5 class="mb-0"> </h5>
                </div>
                <div class="card-body">
                    @if (count($errors) > 0)
                        <div class="alert alert-danger">
                            <ul>
                            @foreach ($errors->all() as $error)
                                <li>{{ $error }}</li>
                            @endforeach
                            </ul>
                        </div>
                    @endif
                    <form method="post" action="{{ route('add_article.newarticle') }}">

                        <div class="form-group">
                            <label for="title" style="margin-bottom:0px;">
                                Title: 
                            </label>

                            <input class="form-control" type="text" name="title" placeholder="Please enter your title!" id="title">
                            @if ($errors->has('title'))
                                {{ $errors->first('title') }}
                            @endif
                        </div>

                        <div class="form-group">
                            <label for="content" style="margin-bottom:0px;">
                                Content: 
                            </label>

                            <textarea class="form-control" rows="3" name="content" placeholder="Please enter your message!" id="content" style="resize:none;"></textarea>
                            @if ($errors->has('content'))
                                {{ $errors->first('content') }}
                            @endif
                        </div>

                        <div class="form-group text-right">
                            <button class="btn btn-primary" type="submit">
                                Create news
                            </button>
                        </div>

                        {{ csrf_field() }}
                    </form>
                </div>
            </div>
        </div>
    </div>
@endsection

Я надеюсь, что кто-то может помочь мне решить эту проблему!

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

На основании этих правил проверки вы увидите ошибки только в том случае, если заголовок пуст или длиннее 64 символов, или содержимое пустое или длиннее 2048 символов.Убедитесь, что данные, с которыми вы тестируете, достаточно длинные, чтобы вызвать любые ошибки.

Для данных, которые проходят проверку, код в настоящее время не сохраняется (закомментирован), а также не возвращает новое местоположение или представление, поэтому он будетпоказать пустую страницу.Вам, вероятно, следует сохранить данные и перенаправить их на индекс или страницу показа с сообщением об успехе.

0 голосов
/ 11 мая 2018

Ваша проверка проходит успешно, но вы ничего не делаете после этого, поэтому она ничего не покажет, если вы не скажете это.

Также убедитесь, что вы используете $request->all() вместо $request в валидаторе в качествепервый вернет фактические введенные значения ввода.

use Validator;


public function post_article(Request $request)
      {

        $validator = Validator::make($request->all(), [
            'title' => 'required|max:64',
            'content' => 'required|max:2048',
        ]);

        if ($validator->fails()) {
                return redirect('home')
                            ->withErrors($validator)
                            ->withInput();
            }

        // $newNews = new News;
        // $newNews->title = $request->title;
        // $newNews->content = $request->content;
        // $newNews->save();

        return redirect()->route('home')->with('message', 'Article created.');

    }

    }

Затем, на ваш взгляд, добавьте сверху:

@if(Session::has('message'))
        <div class="alert alert-success">
            <a href="#" class="close" data-dismiss="alert">&times;</a>
            {{ Session::get('message') }}
        </div>
    @endif



@if (count($errors) > 0)
            <div class="alert alert-danger">
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
@endif
0 голосов
/ 11 мая 2018
use App\Http\Requests;

Удалите это из HomeController.php и попробуйте.

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