我为自己的网站制作了一个小型CMS。使用此CMS,您可以创建页面并向其中添加块。您还可以创建一个新页面并添加一个父页面。像这样...
创建一个名为“项目”的页面
创建一个名为“ Project 1”的页面,并将“ Projects”添加为父项
页面,使网址类似projects/project-1
创建一个名为“信息”的页面,并将“项目1”添加为父项
页面,使网址类似于projects/project-1/information
这个想法。
我已经使上面的部分起作用,但是每当我尝试使用show_page
或edit_page
路由访问视图时,都会显示404 Not Found。
路线
Route::get('/{url}', 'PageController@show')->name('show_page');
Route::get('/dashboard/pages', 'PageController@index')->name('pages');
Route::get('/dashboard/page/create', 'PageController@create')->name('create_page');
Route::post('/dashboard/page/store', 'PageController@store')->name('store_page');
Route::get('/dashboard/page/{url}/edit', 'PageController@edit')->name('edit_page');
Route::delete('/dashboard/page/{url}/delete', 'PageController@destroy')->name('delete_page');
Route::post('/dashboard/pages/order/{url}', 'PageController@changeOrder')->name('change_order');
控制器
我通过在控制器中执行以下操作来创建页面
public function store(Request $request)
{
$identifier = str_replace(' ', '_', strtolower($request->name));
if ($request->sub_page === 0) {
$url = str_replace(' ', '-', strtolower($request->name));
} else {
$parent_page = Page::find($request->sub_page);
$url = $parent_page->url.'/'.str_replace(' ', '-', strtolower($request->name));
}
$page = Page::create([
'name' => $request->name,
'identifier' => $identifier,
'url' => $url,
'status' => 1,
'layout' => $request->layout,
'page_id' => $request->sub_page,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
return redirect('/dashboard/pages');
}
通过...创建视图
public function show($id)
{
$page = Page::where('url', $id)->firstOrFail();
$blocks = Block::where('page_id', $page->id)->where('status', 1)->get();
return view('pages.show', compact('page', 'blocks'));
}