Cakephp路线 - 缺少控制器

时间:2014-01-16 21:20:08

标签: php url cakephp routing

我正在尝试在CakePHP应用程序中创建静态/terms页面。我在terms.ctp中有一个app/View/Pages,在app/Config/routes.php

中有以下内容
<?php
/**
 * Routes configuration
 *
 * In this file, you set up routes to your controllers and their actions.
 * Routes are very important mechanism that allows you to freely connect
 * different URLs to chosen controllers and their actions (functions).
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Config
 * @since         CakePHP(tm) v 0.2.9
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */
/**
 * Here, we are connecting '/' (base path) to controller called 'Pages',
 * its action called 'display', and we pass a param to select the view file
 * to use (in this case, /app/View/Pages/home.ctp)...
 */
    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
/**
 * ...and connect the rest of 'Pages' controller's URLs.
 */
    Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

/**
 * Load all plugin routes. See the CakePlugin documentation on
 * how to customize the loading of plugin routes.
 */
    CakePlugin::routes();

/**
 * Load the CakePHP default routes. Only remove this if you do not want to use
 * the built-in default routes.
 */
    require CAKE . 'Config' . DS . 'routes.php';

    Router::connect('/terms', array('controller' => 'pages', 'action' => 'display', 'terms'));

然而,在访问http://cakeapp.com/terms时,我收到了一个Missing Controller错误:

Error: TermsController could not be found.

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

向上移动路线:(在调用CakePlugin::routes();之前),否则,此路线将被忽略

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
/**
* ...and connect the rest of 'Pages' controller's URLs.
*/
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

Router::connect('/terms/', array('controller' => 'pages', 'action' => 'display', 'terms'));

答案 1 :(得分:3)

尝试删除结尾斜杠:

Router::connect(
    '/terms', 
    array(
        'controller' => 'pages', 
        'action' => 'display', 'terms'
    )
);