没有 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)。