2017-04-19 102 views
0

在routes.php文件刪除我添加CakePHP的3方法中休息路線

$routes->extensions(['json']); 
$routes->resources('News'); 

當郵差,我把網址和選擇方法GET,重定向框架我index()動作,如果我選擇方法POST框架重定向我add()方法,但如果我選擇方法DELETE我再次去index()。如果我選擇方法DELETE,如何去刪除()動作?

////////////////// 我明白我的問題。一切正常。問題在我的網址。我選擇了方法Delete,我的網址是rest.app/api/news。這就是爲什麼框架重定向我index()行動,但如果我把rest.app/api/news/1 並獲得方法Delete我去delete()行動

+1

沒有什麼是你需要做的,不是發送一個適當的'DELETE'要求等。去一些調試,並檢查可能的錯誤和重定向。 – ndm

回答

1

REST應該工作如下:

GET /用戶列表中的用戶。

GET/users/5 show user 5.

POST/users add user。

DELETE /用戶/ 5刪除用戶5

在你的控制器動作,檢查該請求的方法,並調用相應的代碼。

下面是我自己的休息控制器之一的索引操作:

public function indexAction() 
{ 
    switch ($_SERVER['REQUEST_METHOD']) { 
     case 'POST': 
      $json = $this->createRecord(); 
      break; 
     case 'PUT': 
     case 'PATCH': 
     case 'DELETE': 
     $json = $this->sendJSONResponse(array('error' => 'Invalid HTTP Method, did you send an ID?'), self::RESPONSE_NOT_FOUND); 
      break; 
     case 'GET': 
     default: 
      $json = $this->listRecords(); 
      break; 
    } 
    return $json; 
} 
+0

這就是連接資源路由(如OP示例所示)的優點,它會根據請求方法創建連接到適當操作的路由。注意:你不應該直接在CakePHP中使用超級全局變量,這在測試環境中會變得特別惱人,而是使用框架提供的抽象訪問方法(如請求對象)。 – ndm

+0

絕對關於全局$ _SERVER var。如果Cake有一個請求對象,那就從那裏獲取這個值! :-) – delboy1978uk