我想在经典Cake视图的控制器上运行admin方法。 但如果我像这样输入浏览器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 :(得分:1)
阅读Json and XML Views in CakePHP并正确阅读 。一个常见的错误是人们忘记将RequestHandler组件添加到其组件数组中。该组件将负责为您设置正确的布局并将数据序列化。
如果你真的想坚持从URL中删除.json后缀,但是通过浏览器和AJAX调用相同的URL,你必须确保你请求正确的内容类型。检查您发送的标题。
如果您只在标头中请求json(application / json)而不使用URL中的后缀,我不确定RequestHandler是否会向您发送正确的响应,它应该可以使用,试一试。< / p>
答案 1 :(得分:0)
这是参考。
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'));