没有 slug 的 Cakephp 动态主页
Cakephp dynamic homepage without slug
我正在尝试使用 cakephp 3 构建一个动态页面系统。
使用 slugs 我可以显示页面和内容。但是在主页上,它只是使用默认的视图模板。
我有如下路线:
$routes->connect('/', ['controller' => 'pages', 'action' => 'display', 'home']);
$routes->connect('/:slug', ['controller' => 'pages', 'action' => 'view'], ['pass' => ['slug'], 'slug' => '[^\?/]+']);
适用于 none 主页。
但我想将主页用作/(例如localhost:8000/)
而不是 /home(例如 localhost:8000/home)。
目前页面控制器中的视图函数如下所示:
public function view($slug = null)
{
$pages = TableRegistry::getTableLocator()->get('webpages');
$page = $pages->findBySlug($slug)->firstOrFail();
$this->set(compact('page'));
}
有什么想法吗?
看来我已经找到了解决办法。
我将路由更改为以下行:
$routes->connect('/*', ['controller' => 'pages', 'action' => 'view']);
然后我改变了视图如下:
public function view($slug = null)
{
$pages = TableRegistry::getTableLocator()->get('webpages');
if($slug == null){
$query = $pages->find('all', [
'conditions' => ['ishome' => 1]
]);
} else {
$query = $pages->find('all', [
'conditions' => ['slug' => $slug]
]);
}
$page = $query->first();
$this->set(compact('page'));
}
我使用了以下评论的答案,但不得不稍微修改一下,因为该代码用于旧版本的 cakephp(我使用的是 cakekphp 3.8)。
我正在尝试使用 cakephp 3 构建一个动态页面系统。 使用 slugs 我可以显示页面和内容。但是在主页上,它只是使用默认的视图模板。
我有如下路线:
$routes->connect('/', ['controller' => 'pages', 'action' => 'display', 'home']);
$routes->connect('/:slug', ['controller' => 'pages', 'action' => 'view'], ['pass' => ['slug'], 'slug' => '[^\?/]+']);
适用于 none 主页。
但我想将主页用作/(例如localhost:8000/)
而不是 /home(例如 localhost:8000/home)。
目前页面控制器中的视图函数如下所示:
public function view($slug = null)
{
$pages = TableRegistry::getTableLocator()->get('webpages');
$page = $pages->findBySlug($slug)->firstOrFail();
$this->set(compact('page'));
}
有什么想法吗?
看来我已经找到了解决办法。
我将路由更改为以下行:
$routes->connect('/*', ['controller' => 'pages', 'action' => 'view']);
然后我改变了视图如下:
public function view($slug = null)
{
$pages = TableRegistry::getTableLocator()->get('webpages');
if($slug == null){
$query = $pages->find('all', [
'conditions' => ['ishome' => 1]
]);
} else {
$query = $pages->find('all', [
'conditions' => ['slug' => $slug]
]);
}
$page = $query->first();
$this->set(compact('page'));
}
我使用了以下评论的答案,但不得不稍微修改一下,因为该代码用于旧版本的 cakephp(我使用的是 cakekphp 3.8)。