我一直在尝试在我的应用程序中设置RESTful功能,我遇到的问题是我称之为路由器的特定控制器index
操作。我一直试图调用add
和view
个动作,但它们并没有被正确路由。这是我在尝试调用视图操作时获得的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());
}}
非常感谢任何帮助。
答案 0 :(得分:1)
您正在为名为Customers
的控制器创建REST路由,但实际上您正在访问名为RestCustomers
的控制器,因此您遇到的是预期的行为,因为没有连接的REST路由RestCustomers
控制器。
您应该将控制器重命名为CustomersController
,或者更改映射以使用正确的名称,以便将路由连接到RestCustomersController
Router::mapResources('rest_customers');