路线中缺少必需的参数 Laravel 5.7

Missing required parameters in route Laravel 5.7

这可能有什么问题:

路线

Route::get('admin/view-news/{id}', 'AdminNewsController@show')->name('admin.view-news');

控制器

public function index()
    {
        $news = News::all();
        return view('admin.news.news');
    }

public function show($id)
    {
        $news = News::Find($id);
        return view('admin.news.view_news')->with('news', $news);

在控制器中我也试过这个:

    `return view('admin.news.view_news', ['news' => News::findOrFail($id)])`;

查看

{{ 路线 ('admin.view-news') }}

一个重要的注意事项是,对用户来说几乎相同的事情正在起作用:

路线:

Route::get('/user/{id}', 'UsersController@show');

控制器:

public function index()
    {
        $users = User::orderBy('name', 'asc')->paginate(30);

        return view('admin.users.users')->with('users', $users);
    }


 public function show($id)
    {
        $user = User::find($id);

        return view('admin.users.view_user')->with('user', $user);
    }

错误是:

缺少 [路由:admin.view-新闻] [URI:admin/view-news/{id}] 的必需参数。

我在这里错过了什么,我怎么没有得到 id,而在用户控制器中我得到了几乎相同的代码?谢谢。

你应该试试这个

{{ route('admin.view-news', $id) }}

而不是

{{ route('admin.view-news') }}

这对我有用:

Route::get('admin/view-news/{id?}', 'AdminNewsController@show')->name('admin.view-news');

对于视图:

{{ route ('admin.view-news', ['id'=> $id ]) }}

我找到了更好的解决方案: 在你的 blade 文件中这样做

<a href="{{route('admin.view-news',"$id")}}">
  View
</a>

使用这条路线,在路线文件中

Route::get('admin/view-news/{id}', 'AdminNewsController@show');

$id 是通过 compact

从您的控制器发送的
return view('viewPage', compact('id'));