缺少或不正确的 slug 检查 Laravel 7

Posted

技术标签:

【中文标题】缺少或不正确的 slug 检查 Laravel 7【英文标题】:Missing or incorrect slug check Laravel 7 【发布时间】:2020-09-02 04:05:32 【问题描述】:

我最近接近 Laravel 7,我想知道如何使脚本更易于导航和安全。特别是,我需要在基本页面中重定向访问者,以防他输入的帖子缺少或不正确的 slug。

**localhost/post/my-test-slug** = ok

**localhost/post/** = missing slug, redirect to index

等等,我已经尝试过 isset / empty 控制器,但我不明白为什么它不起作用。我该如何解决?

public function show($slug)
    

        $post = DB::table('post')->where('slug', $slug)->first();
        return view('show', ['post' => $post]);
    

【问题讨论】:

我们需要代码来看看有什么问题,你已经尝试了什么? 你能附上你的路线吗? Route::get('/post/slug', 'PostController@show')->name('show'); 【参考方案1】:

如果用户没有 slug 值,您可以通过在页面 404 上重定向来做到这一点,如下面的一个示例:

public function show($slug)

    if($slug == null)
      abort(404);
    

    $post = DB::table('post')->where('slug', $slug)->first();

    if($post == null)
      abort(404);
    

    return view('show', ['post' => $post]);

这不是一个准确的答案,但是是的,您在页面控制器中使用此逻辑来检测路由参数,如果未找到,则将其重定向到页面 404。因此将处理异常。

【讨论】:

以上是关于缺少或不正确的 slug 检查 Laravel 7的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 在 Laravel 7 中将 PascalCase 字符串转换为可用的 slug?

Laravel 刀片模板不使用 slug 渲染

在laravel中通过子查询进行分页

[Route: ] - Laravel 7 缺少必需的参数

Laravel 7.1.x 缺少文件:AuthenticatesUsers、RegistersUsers

Laravel 4 重定向 Slug