Laravel资源控制器段塞

dfuffjeb  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(188)

我正在尝试为laravel制作我自己的简单CMS。我现在可以添加页面,并向他们展示我唯一的问题是页面URL。
途径:

Route::group(array('prefix' => 'admin', 'before' => 'auth.admin'), function()
{
Route::resource('pages', 'App\Controllers\Admin\PagesController');
}

这是我的链接:http://domain.com/admin/pages/2访问我的页面与id 2,在我的数据库中,我有一个slug列我如何才能改变链接到属于id 2的slug,所以我得到以下链接:
http://domain.com/slug
希望你能帮助我!

kuuvgm7e

kuuvgm7e1#

您需要设置的路径为

Route::get('{slug}', 'App\Controllers\Admin\PagesController@show');

然后在你的控制器里

public function show($slug)
{
    $page = Page::where('slug', '=', $slug)->get();
    return View::make('your.template')->withPage($page);
}
nvbavucw

nvbavucw2#

在Laravel 9中,您可能已经使用模型绑定来实现这一点。
使用资源路由控制器时...
1.在web.php中,使用except来挑选出您想要与自定义url一起使用的操作

Route::resource('/blog', 'AnimeBlogController', ['except' => ['show']]);

Route::get('/blog/{anime}', 'AnimeBlogController@show');

1.确保生成“自定义url”并将其存储在某个位置以用作url。例如,标题“Elon musk goes to the moon”可能存储为“elon-musk-goes-to-the-moon我们通过以下方式完成此操作
主计长
'slug' => Str::slug($request->input('blog_title'))Str::slug
1.如果您希望模型绑定在检索给定的模型类时总是使用数据库列而不是id,您可以覆盖Eloquent模型上的getRouteKeyName方法:

* Get the route key for the model.
 *
 * @return string
 */
public function getRouteKeyName()
{
return 'slug';
}

4.注意我的路线在Route::get('/blog/{anime}','AnimeBlogController@ show')中有一个博客/{anime};
1.{anime}必须匹配您在资源路线public function show(Anime $anime)上设置的变量
动画是我的数据库中的表的名称,$anime引用Route::get('/blog/{anime}'
1.最后,使用slug获取数据返回视图(我试图解释模型绑定)。

相关问题