【发布时间】: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-fr、slug-de等。这样,如果第一个slug是唯一的,它将始终是唯一的 -
强迫他/她修改 slug 直到它们都是唯一的,这不是一个好主意。如果您的代码修改了服务器上的非唯一 slug,那就太麻烦了。例如,通过添加计数器或语言后缀。
-
在控制器中,也许可以尝试通过翻译迭代,
$slug_exists = DB::table('pages')->select('*')->where('slug', $translation_slug)->count() > 0;? -
使
slug列唯一,不要强迫用户使它们唯一 制作一个代码,就像每个 slug 都是唯一的,您可以在 slug 末尾添加语言名称,例如 'abc_example_slug_eng', ' abc_exemple_limace_fr' :)