Как исправить эту ошибку в Laravel при создании категории - PullRequest
1 голос
/ 13 мая 2019

Я создаю сайт для блога. Я добавил страницу категории, которая быстро обновляется, но не возвращается к индексу: category.php, CategoriesController.php. Я использую Laravel v5.5 и OpenServer.

category.php

namespace App;

use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    protected $fillable = ['title', 'slug',];

    public function user()
    {
        return $this->belongsToMany(
            User::class,
            'id_idcat',
            'gid',
            'idcat'
        );
    }

    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'title'
            ]
        ];
    }
}

CategoriesController.php

namespace App\Http\Controllers\Admin;

use App\Category;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use View;

class CategoriesController extends Controller
{
    public function index()
    {
        $categories = Category::all();

        return view('admin.categories.index', ['categories' => $categories]);
    }

    public function create()
    {
        return view('admin.categories.create');
    }

    public function store(Request $request)
    {
        $this->validate($request, [
            'title' => 'required' //обязательно
        ]);

        Category::create($request->all());

        return redirect()->route('admin.categories.index');
    }
}

create.blade.php

{!! Form::open(['route' => 'categories.store']) !!}
<div class="box-header with-border">
    <h3 class="box-title">Добавляем категорию</h3>
</div>
<div class="box-body">
    <div class="col-md-6">
        <div class="form-group">
            <label for="exampleInputEmail1">Название</label>
            <input type="text" class="form-control" idcat="exampleInputEmail1" name="cat">
        </div>
    </div>
</div>
<!-- /.box-body -->
<div class="box-footer">
    <button class="btn btn-default">Назад</button>
    <button class="btn btn-success pull-right">Добавить</button>
</div>
<!-- /.box-footer-->
{!! Form::close() !!}

Я не могу найти ошибку. Я делал подобные задачи несколько раз.

1 Ответ

0 голосов
/ 13 мая 2019

Ваши данные не проверяются, так как нет ввода с именем title, потому что он называется cat, поэтому ваш валидатор перенаправляет вас обратно с ошибками, но ваш блэйд не показывает ошибки, поэтому вы их не видите.

Измените имя поля в представлении создания и добавьте ошибки, как показано ниже:

Редактировать: также добавить CSRF в форму

create.blade.php

@if ($errors->any())
    <div class="alert alert-danger" role="alert">
        @foreach ($errors->all() as $input_error)
            {{ $input_error }}
        @endforeach
    </div>
@endif

    {!! Form::open(['route' => 'categories.store']) !!}  
    {{ csrf_field() }}
    <div class="box-header with-border">
        <h3 class="box-title">Добавляем категорию</h3>
      </div>
      <div class="box-body">
        <div class="col-md-6">
          <div class="form-group">
            <label for="exampleInputEmail1">Название</label>
            <input type="text" class="form-control" idcat="exampleInputEmail1" placeholder="" name="title">
          </div>
      </div>
    </div>
      <!-- /.box-body -->
      <div class="box-footer">
        <button class="btn btn-default">Назад</button>
        <button class="btn btn-success pull-right">Добавить</button>
      </div>
      <!-- /.box-footer-->
      {!! Form::close() !!}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...