Здравствуйте! Есть статьи, к каждой из них я сформировал slug и записал в бд с помощью
str_slug()
. Как вместо site.dev/news/1 сделать site.dev/news/slug_url. И можно это сделать без использования различных пакетов?
web.php
Route::post('news','ArticlesController@store');
Route::resource('news',"ArticlesController",
['except' => ['show']]);
Route::get('news/{slug?}', 'ArticlesController@show');
ArticlesController
public function show($id)
{
$article = Article::findOrFail($id);
return view('articles.show', compact('article'));
}
public function store(ArticleRequest $request)
{
$input = $this->imageArticleRequest($request);
Auth::user()
->articles()
->create($input);
session()->flash('flash_message', 'Статья успешно создана');
return redirect('news');
}
protected function imageArticleRequest($request)
{
if ($request->hasFile('article_wall')) {
$image = $request->file('article_wall');
$imageName = time() . "." . $image->getClientOriginalExtension();
$savePath = public_path('/uploads/articleImages/' . $imageName);
Image::make($image)
->save($savePath);
$input = $request->all();
$input = array_except($input, 'pathName');
$input['article_wall'] = $imageName;
$title = $input['title'];
$input['slug'] = str_slug($title);
return $input;
}
}