CakePHP 3:链接到PagesController中的任何操作都会打开相同的操作

时间:2016-06-13 18:09:07

标签: cakephp routing cakephp-3.0

我必须链接到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

3 个答案:

答案 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中创建方法,这是一个简单的可选控制器,用于提供静态内容。