我正在将现有的2.5应用迁移到3.0。我现在在使用json请求时遇到错误的模板错误,这是我在旧版本中没有的。
我没有看到任何可能错过的步骤。
routes.php文件
Router::extensions(['json', 'xml']);
PagesController.php
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
}
public function request(){
$this->request->onlyAllow('ajax');
$userName = $this->request->data['name'];
$userCompany = $this->request->data['company'];
$userEmail = $this->request->data['email'];
$userPhone = $this->request->data['phone'];
//send an email
}
之前的应用程序能够检测到请求类型并返回相同类型。无需设置渲染。
答案 0 :(得分:1)
我发现因为我试图访问PagesController.php上的一个动作,即routes.php试图通过查找模板的显示动作传递它。
routes.php文件
$routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);
PagesController.php
public function display()
{
$path = func_get_args();
$count = count($path);
if (!$count) {
return $this->redirect('/');
}
$page = $subpage = null;
if (!empty($path[0])) {
$page = $path[0];
}
if (!empty($path[1])) {
$subpage = $path[1];
}
$this->set(compact('page', 'subpage'));
try {
$this->render(implode('/', $path));
} catch (MissingTemplateException $e) {
if (Configure::read('debug')) {
throw $e;
}
throw new NotFoundException();
}
}