我正在使用Laravel 6来构建一个博客应用程序,这个应用程序的语言是阿拉伯语,但是slug有一个问题,看起来Laravel不支持阿拉伯语。
有办法解决吗
控制器
public function post($slug)
{
$post = Post::where('slug',$slug)->first();
return view('content.post',compact('post'));
}
存储区方法
public function store(Request $request)
{
$this->validate($request, array(
'title' => 'required|max:255',
'slug' => 'required|min:3|max:255|unique:posts',
'body' => 'required',
));
$post = new Post;
$post->title = $request->input('title');
$post->slug = Str::slug($request->slug, '-');
$post->body = $request->input('body');
$post->save();
return redirect('admin/posts')->with('success', 'post is successfully saved');
}
路线
Route::get('post/{slug}', 'PagesController@post')->name('post.show');
5条答案
按热度按时间vyu0f0g11#
您可以使用此函数
它将为每种语言阿拉伯语或英语。它会很好地工作。
50few1ms2#
Laravel对阿拉伯语等语言的音译支持不是很好。你也可以使用PHP的Transliterator https://www.php.net/manual/en/transliterator.transliterate.php在通过Laravel的
Str::slug
函数发送之前获取音译字符串。例如,你可以使用这样的东西:
请注意,您需要安装
PECL intl
才能工作。hk8txs483#
我知道@Mohammed Aktaa已经有了正确的答案,但是它缺少了删除向后和向前斜杠的部分,这可能会导致在请求具有slug的get url时出现致命的错误:
因此,通过以下方式纠正slug函数:
3zwtqj6y4#
您可以使用此
vc9ivgsu5#
我正在使用这个JS片段来处理Laravel 10中的逻辑
它监听“posttitle”字段中的内容,并将空格转换为破折号,然后在验证后将其与**$request**一起发送