Laravel 自定义固定链接
Laravel custom permalink
我正在尝试更改文章页面的 url,因此我不想显示文章 ID,而是想显示文章标题。
目前URL如下;
https://www.example.com/posts/post/32
其中 32 只是一个随机的文章 ID。
相反,我喜欢它显示如下;
https://www.example.com/posts/post/my-amazing-article
现在我查看了 laravel 文档和 Whosebug 上的不同帖子并尝试了很多东西,但我显然在某个地方犯了一个错误,因为似乎没有任何效果所以我几乎回到了我开始的地方.
Blade
<a href="{{ route('post', $a->id) }}" class="feature-box-01 media" id="smallbox"></a>
路线
Route::get('/posts/post/{id}', [App\Http\Controllers\WelcomeController::class, 'post'])->name('post');
控制器
public function post(request $request){
$id = $request->id;
$article = Tinymce::find($id);
return view('/post')->with('articles, $articles');
}
现在保存在 Tinymce 中的文章实际上是在子域的不同控制器上创建的。
public function tinymce(Request $request)
{
if(request()->ajax())
{
if($request->article_id == null)
{
$tinymce = new Tinymce;
}else{
$tinymce = Tinymce::find($request->article_id);
}
$tinymce->description = $request->description;
$tinymce->content = $request->myContent;
$tinymce->title = $request->title;
$tinymce->author = $request->author;
$tinymce->publish = $request->publish;
$title = $tinymce->title;
$slug = Str::slug($title, "-");
$tinymce->slug = $slug;
$tinymce->save();
return $tinymce->id;
}
}
如您所见,当我在某个地方读到这是使用自定义的方式时,我已经将标题变成了一个 slug url,但我并没有深入了解它。
非常感谢任何帮助,谢谢。
解释:
首先,正如您所说,您将 slug 存储到数据库中。所以,那很好。
从 Controller
到 View
,您可以将 slug
放入 post
对象中。
Blade View :(你必须在路线 url 中通过 slug
)
<a href="{{ route('post', $a->slug) }}" class="feature-box-01 media" id="smallbox"></a>
路线:(id
到slug
)
Route::get('/posts/post/{slug}', [App\Http\Controllers\WelcomeController::class, 'post'])->name('post');
控制器:(现在你可以从第二个参数得到slug
)
public function post(request $request, $slug = ''){
$article = Tinymce::where('slug', $slug)->first();
return view('/post', compact('article'));
}
现在,您可以使用 slug 访问自定义 URL。
希望对你有帮助。 @assiemp
我正在尝试更改文章页面的 url,因此我不想显示文章 ID,而是想显示文章标题。
目前URL如下;
https://www.example.com/posts/post/32
其中 32 只是一个随机的文章 ID。
相反,我喜欢它显示如下;
https://www.example.com/posts/post/my-amazing-article
现在我查看了 laravel 文档和 Whosebug 上的不同帖子并尝试了很多东西,但我显然在某个地方犯了一个错误,因为似乎没有任何效果所以我几乎回到了我开始的地方.
Blade
<a href="{{ route('post', $a->id) }}" class="feature-box-01 media" id="smallbox"></a>
路线
Route::get('/posts/post/{id}', [App\Http\Controllers\WelcomeController::class, 'post'])->name('post');
控制器
public function post(request $request){
$id = $request->id;
$article = Tinymce::find($id);
return view('/post')->with('articles, $articles');
}
现在保存在 Tinymce 中的文章实际上是在子域的不同控制器上创建的。
public function tinymce(Request $request)
{
if(request()->ajax())
{
if($request->article_id == null)
{
$tinymce = new Tinymce;
}else{
$tinymce = Tinymce::find($request->article_id);
}
$tinymce->description = $request->description;
$tinymce->content = $request->myContent;
$tinymce->title = $request->title;
$tinymce->author = $request->author;
$tinymce->publish = $request->publish;
$title = $tinymce->title;
$slug = Str::slug($title, "-");
$tinymce->slug = $slug;
$tinymce->save();
return $tinymce->id;
}
}
如您所见,当我在某个地方读到这是使用自定义的方式时,我已经将标题变成了一个 slug url,但我并没有深入了解它。
非常感谢任何帮助,谢谢。
解释:
首先,正如您所说,您将 slug 存储到数据库中。所以,那很好。
从 Controller
到 View
,您可以将 slug
放入 post
对象中。
Blade View :(你必须在路线 url 中通过 slug
)
<a href="{{ route('post', $a->slug) }}" class="feature-box-01 media" id="smallbox"></a>
路线:(id
到slug
)
Route::get('/posts/post/{slug}', [App\Http\Controllers\WelcomeController::class, 'post'])->name('post');
控制器:(现在你可以从第二个参数得到slug
)
public function post(request $request, $slug = ''){
$article = Tinymce::where('slug', $slug)->first();
return view('/post', compact('article'));
}
现在,您可以使用 slug 访问自定义 URL。
希望对你有帮助。 @assiemp