生成 slug 之后路由发生 bug ?
首先声明本地没有路由缓存。
当点击编辑的时候,只见页面刷新,没有进入到编辑页面,测试一番发现始终走的 topics.show
这个路由。
Route::resource('topics', 'TopicsController', ['only' => ['index', 'create', 'store', 'update', 'edit', 'destroy']]);
Route::get('topics/{topic}/{slug?}', 'TopicsController@show')->name('topics.show');
更纳闷儿的是这只是个别现象,有些是可以编辑的
按照文档 补充资源控制器 所述,应该把 topics.show
放到 resource
前面,经测试不管顺序如何,走的都是 topics.show
这个路由,也就是 topics.edit
没起作用。
以下是关键代码
public function show(Request $request, Topic $topic)
{
if (! empty($topic->slug) && $topic->slug != $request->slug) {
return redirect($topic->link(), 301);
}
return view('topics.show', compact('topic'));
}
public function edit(Topic $topic)
{
$this->authorize('update', $topic);
$categories = Category::all();
return view('topics.create_and_edit', compact('topic', 'categories'));
}
public function link($params = [])
{
return route('topics.show', array_merge([$this->id, $this->slug], $params));
}
推荐文章: