Laravel 5.8 Редактирование сообщения приводит к ошибке 404 - PullRequest
0 голосов
/ 10 ноября 2019

Я добавил Datatables в свое приложение и хотел, чтобы идентификатор каждой записи был гиперссылкой на страницу редактирования, чтобы пользователь мог редактировать свою публикацию. Но я получаю сообщение об ошибке 404 Not Found

Я попытался обновить файл маршрута, но не получил правильный результат и не могу понять, что я делаю неправильно

В моем файле php есть:

Route::get('edit','PostsController@edit');

Индекс моих сообщений:

<table class="display" id="postsTable">
    <thead>
    <tr>
        <td>ID</td>
        <th>Title</th>
        <th>Slug</th>
        <th>Subtitle</th>
        <th>Content</th>
        <th>Category</th>
    </tr>
    </thead>
    <tbody>
    @foreach($posts as $post)
        <tr>
            <td><a href="edit/{{$post->id}}">{{$post->id}}</a></td>
            <td>{{$post->title}}</td>
            <td>{{$post->slug}}</td>
            <td>{{$post->subtitle}}</td>
            <td>{{$post->content}}</td>
            <td>{{$post->category_id}}</td>
        </tr>
      @endforeach
    </tbody>

А функция редактирования PostsController:

  public function edit($id)
    {
        $posts = Post::findOrFail($id);
        return view('posts.edit',compact('posts'));
    }

Я пытался искать в Интернете и немного поиграть смои маршруты, но мне удалось сделать вещи хуже, чем решить мою проблему. любая помощь очень ценится!

Ответы [ 3 ]

1 голос
/ 10 ноября 2019

Вы можете установить имя маршрута, как показано ниже

Route::get('edit/{id}','PostsController@edit')->name('edit_post');

Затем в разделе HTML используйте его, как показано ниже

<tbody>
@foreach($posts as $post)
    <tr>
        <td><a href="{{ route('edit_post', $post->id) }}">Edit Post</a></td>
        <td>{{$post->title}}</td>
        <td>{{$post->slug}}</td>
        <td>{{$post->subtitle}}</td>
        <td>{{$post->content}}</td>
        <td>{{$post->category_id}}</td>
    </tr>
  @endforeach
</tbody>

Вы должны добавить некоторую проверку на стороне клиента, чтобы убедиться, что у вас естьданные, чтобы вы могли добавить свой код внутри, если условие, как показано ниже

@if ($posts ?? count($posts) ?? false)
    // Your code here
@endif
0 голосов
/ 16 ноября 2019

В проверке вашего контроллера сообщения найдены или нет

public function edit($id)
{
    $posts = Post::findOrFail($id);
    // check post are found or not
    if(!isset($posts)){
         # show your errors if data not found
    }
    return view('posts.edit',compact('posts'));
}
0 голосов
/ 10 ноября 2019

Вы уверены, что в вашей базе данных есть запись, соответствующая $ id, которая пришла с методом get? Если подходящей записи нет, findOrFail ($ id) возвращает 404 страницы.

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