2014-07-24 101 views
0

我的CakePHP應用的前端基於REST API,每個控制器都有用戶和管理方法。REST API的CakePHP管理路由

我想用經典的Cake view在控制器上運行管理方法。 但是,如果我喜歡這類型到瀏覽器的URL:

http://myproject.loc/admin/cards/add/

我只得到:

{ 
code: 500, 
name: "View file api/app/View/Cards/json/admin_add.ctp" is missing.", 
message: "View file api/app/View/Cards/json/admin_add.ctp" is missing.", 
url: "/admin/cards/add/" 
} 

的問題是:

如何設置正確的URL爲管理路線? (沒有json前綴)

+0

爲什麼要刪除.json後綴?使用它會讓事情變得更容易。 – burzum

回答

1

Json and XML Views in CakePHP和請正確閱讀。一個常見的錯誤是人們忘記將RequestHandler組件添加到他們的組件數組中。該組件將負責爲您設置正確的佈局並對數據進行序列化。

如果您確實想要從URL中刪除.json後綴,但通過瀏覽器和AJAX調用相同的URL,則必須確保您請求正確的內容類型。檢查您發送的標題。

我不確定RequestHandler是否會向您發送正確的響應,如果您只在頭中請求json(application/json)而不使用URL中的後綴,它應該可以工作,試試看。

0

這裏是ref。

http://book.cakephp.org/2.0/en/views/json-and-xml-views.html

您需要添加下面一行到你的控制器功能

我希望你它編碼的JSON下列方式

$arrayData = array(...);//as example 
class PostsController extends AppController { 
    public function index() { 
     $this->autoRender = false; 
     $this->layout = null; 
     $this->set(compact('posts', 'comments')); 
    } 
} 

// View code - app/View/Posts/json/index.ctp 
foreach ($posts as &$post) { 
    unset($post['Post']['generated_html']); 
} 
echo json_encode(compact('posts', 'comments')); 
+0

但是沒有使用$ this-> autoRender = false; 我自動使用JSON輸出作爲全局設置。 – redrom

+0

您是否通過控制器功能r8返回輸出? – bhushya

+0

你的全球設置是什麼意思?你可以在這裏粘貼代碼嗎? – bhushya