蛋糕PHP管理员和网站路由器


CakePHP admin and website router

我正在学习CakePHP,我正在构建一个CMS,但我似乎无法正确使用路由器。

每个网址都应该使用网站控制器的索引操作,除了"admin"

/admin 工作,但是当我去/foobar 时,它要求 FoobarController

Router::connect("/admin/:controller/:action", 
    array("controller" => "admin")
);
Router::connect("/", 
    array("controller" => "website", "action" => "index")
);
Router::connect("/:slug/*", 
    array("controller" => "website", "action" => "index"), 
    array("pass" => array("slug"), "slug" => '(?!admin)')
);

我认为问题是"slug" => '(?!admin)'.无论如何,您都不需要它,因为以/admin 开头的 url 已经被您的第一个路由捕获。

其他问题,以下路线没有意义:

Router::connect("/admin/:controller/:action", 
   array("controller" => "admin")
);`

它基本上告诉管理员控制器和foobar控制器处理/admin/foobar网址。

试试这个:

Router::connect("/admin",
    array("controller" => "admin", "action" => "index")
);
Router::connect("/admin/:action",
    array("controller" => "admin")
);
Router::connect("/",
    array("controller" => "website", "action" => "index")
);
Router::connect("/:slug/*",
    array("controller" => "website", "action" => "index"),
    array("pass" => array("slug"))
);

所以,我想通了。

通过删除:

Router::connect("/admin/:action",
    array("controller" => "admin")
);
Router::connect("/",
    array("controller" => "website", "action" => "index")
);

并添加:

Router::connect("/admin",
    array("controller" => "admin", "action" => "index")
);
Router::connect("/:slug",
    array("controller" => "website", "action" => "index"),
    array("pass" => array("slug"))
);

特别感谢PGBI