CakePHP将HTTP请求映射到正确的操作

时间:2014-07-15 09:19:42

标签: cakephp cakephp-2.3

我一直在尝试在我的应用程序中设置RESTful功能,我遇到的问题是我称之为路由器的特定控制器index操作。我一直试图调用addview个动作,但它们并没有被正确路由。这是我在尝试调用视图操作时获得的resposne:

{"code":404,"url":"\/application\/rest_customers\/54.json","name":"Action RestCustomersController::54() could not be found."}

以下是所有设置的方式。RestCustomersController

class RestCustomersController extends AppController {

    public $uses = array('Customer');
    public $helpers = array('Html', 'Form');
    public $components = array('RequestHandler');

    public function index() {
    }

    public function view($id=null){

    $customer = $this->Customer->find('first', array(
          'conditions'=>array('Customer.id'=> $id)));

        $this->set(array(
            'customer' => $customer,
            '_serialize' => array('customer')
        )); }}

以下是路线:

Router::mapResources('customers');
Router::parseExtensions('json', 'xml', 'csv', 'pdf');

这里是AppControllers beforeFitler函数:

if(in_array($this->params['controller'], array('rest_customers'))){
    $this->Auth->allow();
    $this->Security->unlockedActions = array('add','index', 'view');
}else{
    $this->Security->unlockedActions = array('add', 'edit');
    $this->Auth->allow('index', 'view');
    $this->set('logged_in', $this->Auth->loggedIn());
    $this->set('current_user', $this->Auth->user());
}}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您正在为名为Customers的控制器创建REST路由,但实际上您正在访问名为RestCustomers的控制器,因此您遇到的是预期的行为,因为没有连接的REST路由RestCustomers控制器。

您应该将控制器重命名为CustomersController,或者更改映射以使用正确的名称,以便将路由连接到RestCustomersController

Router::mapResources('rest_customers');