【问题标题】:Cakephp dynamic homepage without slug没有slug的Cakephp动态主页
【发布时间】:2019-08-04 13:03:23
【问题描述】:

我正在尝试使用 cakephp 3 构建动态页面系统。 使用 slugs 我可以显示页面和内容。但是在首页,它只是使用默认的视图模板。

我的路线如下:

$routes->connect('/', ['controller' => 'pages', 'action' => 'display', 'home']);
$routes->connect('/:slug', ['controller' => 'pages', 'action' => 'view'], ['pass' => ['slug'], 'slug' => '[^\?/]+']);

这适用于无主页页面。

但我想将主页用作 /(例如 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'));
}

有什么想法吗?

【问题讨论】:

    标签: cakephp-3.0


    【解决方案1】:

    似乎我已经找到了解决方案。

    我将路由更改为以下行:

    $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)。

    https://stackoverflow.com/a/3975923/6181243

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 2011-07-28
      • 2021-07-11
      相关资源
      最近更新 更多