【问题标题】:laravel validating if passed params are not equallaravel 验证传递的参数是否不相等
【发布时间】:2017-05-03 11:27:12
【问题描述】:

我正在创建一个应用程序,它允许用户以多种语言创建博客文章。每种语言都有一个包含不同字段的选项卡。他们可以定义标题、内容和 slug。当他们保存博文时,所有参数都通过 FormRequest 类进行验证,如下所示:

{  
   "_method":"PUT",
   "_token":"eEDkVUU0cEcfAe3EQCiUIEdvCjTBqLFPT8CwW22D",
   "translations":{  
      "nl":{  
         "title":"A animi non est id repellat.nl",
         "slug":"veritatis-quos-iusto-eumnl",
         "content":"<p>ad-voluptate-sed-istenl<\/p>"
      },
      "en":{  
         "title":"Velit dignissimos suscipit unde et quod.en",
         "slug":"cupiditate-in-quaerat-uten",
         "content":"<p>rem-corporis-aut-aten<\/p>"
      },
      "fr":{  
         "title":"Mollitia reiciendis hic accusamus id dignissimos.fr",
         "slug":"voluptatem-iusto-quasi-rationefr",
         "content":"<p>accusantium-tempore-eos-nisifr<\/p>"
      },
      "de":{  
         "title":"Esse quasi ut delectus molestiae rem.de",
         "slug":"voluptates-excepturi-labore-mollitiade",
         "content":"<p>earum-delectus-velit-distinctiode<\/p>"
      }
   }
}

现在我希望 slug 是唯一的,但正常的唯一规则不起作用,因为传递的参数还没有添加到数据库中。验证蛞蝓的最佳方法是什么,所以它们都是独一无二的?

【问题讨论】:

  • 为什么不根据帖子标题自动生成slug?
  • 最好让他选择一次slug。然后,您只需为其他语言创建它,例如 slug-frslug-de 等。这样,如果第一个 slug 是唯一的,它将始终是唯一的
  • 强迫他/她修改 slug 直到它们都是唯一的,这不是一个好主意。如果您的代码修改了服务器上的非唯一 slug,那就太麻烦了。例如,通过添加计数器或语言后缀。
  • 在控制器中,也许可以尝试通过翻译迭代,$slug_exists = DB::table('pages')-&gt;select('*')-&gt;where('slug', $translation_slug)-&gt;count() &gt; 0;?
  • 使 slug 列唯一,不要强迫用户使它们唯一 制作一个代码,就像每个 slug 都是唯一的,您可以在 slug 末尾添加语言名称,例如 'abc_example_slug_eng', ' abc_exemple_limace_fr' :)

标签: php laravel


【解决方案1】:

如果您绝对必须让他们为每个创建自定义 slug,您可以尝试使用 different validation rule

$this->validate($request, [
    'slug_field_1' => 'different:slug_field_2|different:slug_field_3|...',
    'slug_field_2' => 'different:slug_field_1|different:slug_field_3|...','
    ...
]);

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 2021-02-13
    • 2020-01-02
    相关资源
    最近更新 更多