我必须链接到PagesController
中的不同操作。
我创建了许多静态页面,为此我定义了一个类似
的动作public function contact(){
}
现在当我访问www.mysite.com/pages/contact
而不是打开contact.ctp
时,它会打开默认的display
操作。
routes.php
文件包含
Router::defaultRouteClass('DashedRoute');
Router::scope('/', function (RouteBuilder $routes) {
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
$routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);
$routes->fallbacks('DashedRoute');
});
Plugin::routes();
如何访问静态网页或actions
的其他PagesController
?
答案 0 :(得分:1)
PagesController
的默认路由是将所有内容定向到display
操作。
为了添加其他操作,您需要专门路由这些操作。
$routes->connect('/pages/contact', ['controller' => 'Pages', 'action' => 'contact']);
或者,如果您不希望所有内容都通过display
操作,请移除routes.php
中指定所有内容的特定行。 CakePHP会将以/pages/
开头的任何内容自动路由到PagesController,并在斜杠之后执行任何操作。
答案 1 :(得分:1)
$routes->connect('/pages/:action/*', ['controller' => 'Pages']);
现在你可以打电话给不同的行动。例如
www.mysite.com/pages/contact
www.mysite.com/pages/about
www.mysite.com/pages/someaction
答案 2 :(得分:0)
如果您创建了视图文件src / Template / Pages / contact.ctp,则可以使用URL http://example.com/pages/contact
访问它无需在routes.php中更改任何内容。无需在PagesController中创建方法,这是一个简单的可选控制器,用于提供静态内容。