Laravel 通配符问题

Laravel wild card problems

我有 master.blade.php 作为我的布局之一。当我在没有像 url:localhost8000/post 这样的通配符的情况下在浏览器中加载 post.blade.php 时,它可以工作并且加载了完整的必需页面,但是当我使用通配符 url:localhost8000/post/1 时,页面没有完全加载。仅显示页脚。 Header 和 body 出现白火错误表明存在通过通配符传递的数据。

两个页面应该显示相同,因为 url 中的区别仅在于通配符。

我的路由文件是

Route::get('post','PostsController@index');
Route::get('post/{post}','PostsController@show');

这是我的 PostsController

class PostsController extends Controller{
public function index(){
    return view('posts.post');
}

public function show(Post $post){
    return view('posts.post',compact('post'));
}
}

发生此类错误时,很可能是您的项目中存在 PHP 变量错误。

找出问题的方法是查看 HTML 的源代码,并根据错误发生的位置查看页面的第一部分或最后一部分。

此外,我假设您已经在路由中正确绑定关键字 'id',在您的 Post 模型中。

您应该传递 id 而不是对象,因为您的 url 传递的是整数 localhost:8000/post/1

class PostsController extends Controller{
    public function index(){
        return view('posts.post');
    }

    public function show($id){
        $post = Post::find($id);
        return view('posts.post',compact('post'));
    }
}

如果您在 HTML 文档中包含一些资产文件,例如 CSS 或 JS 文件,则文件路径应以正斜杠开头,而不是 'assets/css/foo.css' ,您应该写 ' /assets/css/foo.css' 当所有文档都在加载但页脚没有加载时它对我有用