Ошибка 404 Laravel 5.8 Маршрутизируемая страница не найдена

#php #laravel

#php #laravel

Вопрос:

Я новичок в Laravel. Я изучаю Laravel из руководства и сталкиваюсь с одной проблемой, которую не могу решить.
Я думаю, что у меня где-то проблема с маршрутизацией, но я не могу ее найти
Забавно, что если href есть {{route('tag.create'}} , то он переходит к созданию страницы, но когда мне нужно использовать ID, это не работает… У меня была такая же функциональность для сообщений и категорий, но для этих двух все работало нормально. Итак, мне действительно нужна ваша помощь, чтобы увидеть то, чего я не вижу. У меня есть эти файлы:

index.blade.php :

 @extends('layouts.app')

@section('content')

    <div class="card">
        <div class="card-body">
            <table class="table table-hover">
                <thead>
                    <th>
                        Tag name
                    </th>

                    <th>
                        Delete
                    </th>
                </thead>
                <tbody>
                    @if($tags->count()>0)
                        @foreach($tags as $tag)
                            <tr>
                                <td>
                                    {{$tag->tag}}
                                </td>
                                <td>
                                    <a href="{{route('tag.delete', ['id' =>$tag->id])}}" class="btn btn-danger btn-xs"><i class="fa fa-trash" aria-hidden="true"></i></a>
                                </td>
                            </tr>
                        @endforeach
                    @else
                        <tr>
                            <th colspan="5" class="text-center">
                                No tags yet
                            </th>
                        </tr>
                    @endif
                </tbody>
            </table>    

        </div>
    </div>


@stop
  

web.php — это место, где я определяю маршруты для тегов для TagsController.php :

 //Tags
    Route::get('/tags',[
        'uses'=>'TagsController@index',
        'as'=> 'tags'
    ]);

    Route::post('/tag/update/{$id}',[
        'uses'=>'TagsController@update',
        'as'=> 'tag.update'
    ]);

    Route::get('/tag/create',[
        'uses'=>'TagsController@create',
        'as'=> 'tag.create'
    ]);
    Route::post('/tag/store',[
        'uses'=>'TagsController@store',
        'as'=> 'tag.store'
    ]);
    Route::get('/tag/delete/{$id}',[
        'uses'=>'TagsController@destroy',
        'as'=> 'tag.delete'
    ]);
  

TagsController.php — сначала я попытался уничтожить элемент, затем я попытался вернуть create view (потому что, когда я перехожу через /tag / create route, все работает), но ни то, ни другое здесь не сработало

 public function destroy($id)
    {
        return view ('admin.tags.create');
        /*
        Tag::destroy($id);

        Session::flash('success', 'Tag deleted succesfully');

        return redirect()->back();*/
    }
  

Комментарии:

1. Измените {$id} на {id} .

Ответ №1:

Я считаю, что вам следует задать для маршрута значение Route::get('/tag/delete/{id}',[ 'uses'=>'TagsController@destroy', 'as'=> 'tag.delete' ]); , потому что в вашем случае вы указываете маршруту ожидать вызываемую переменную $id

Комментарии:

1. Спасибо, приятель. Ненавижу себя за то, что не увидел идентификатор $ before.

2. В любое время, приятель. Не корите себя за это, такие вещи часто случаются. Мы забываем и добавляем бесполезный $. Убедитесь, что вы также изменили его в обновлении. Удачи, и если вы хотите, пожалуйста, примите мой ответ

Ответ №2:

Пожалуйста, измените параметры в настройке маршрута в web.php из $ id в id. Я должен решить вашу проблему.

Например: Route::get('/tag/delete/{id}',[
'uses'=>'TagsController@destroy',
'as'=> 'tag.delete'
]);

Спасибо !!.