2016-03-02 1 views
1

Я подготовил контроллер, как показано ниже.Ошибка с контроллером cakephp для возврата ответа json

class TasksController extends AppController 
{  
    public function index() 
    { 
     $this->paginate = [ 
      'contain' => ['Users'], 
      'conditions' => [ 
       'Tasks.user_id' => $this->Auth->user('id'), 
      ] 
     ]; 
     $tasks = $this->paginate($this->Tasks); 
     $this->set(compact('tasks')); 

     //$this->set('tasks', $this->paginate($this->Tasks)); 
     $this->set('_serialize', ['tasks']); 
    } 
} 

и мой AppController, как показано ниже.

class AppController extends Controller 
{ 
    public function initialize() 
    { 
     parent::initialize(); 

     $this->loadComponent('RequestHandler'); 
     $this->loadComponent('Flash'); 
     $this->loadComponent("Auth", [ 
      'authorize' => 'Controller', 
      'authenticate' => [ 
       'Form' => [ 
        'fields' => [ 
         'username' => 'email', 
         'password' => 'password' 
        ] 
       ] 
      ], 
      'loginAction' => [ 
       'controller' => 'Users', 
       'action' => 'login' 
      ], 
      'unauthorizedRedirect' => $this->referer() 
     ]); 

     $this->Auth->allow(['display']); 
    } 
} 

Когда я ввожу следующий URL-адрес, "http://localhost/cake/tasks.json" Я получаю следующее сообщение об ошибке.

Error: Tasks.jsonController could not be found. 

Error: Create the class Tasks.jsonController below in file: src/Controller/Tasks.jsonController.php 


<?php 
namespace App\Controller; 

use App\Controller\AppController; 

class Tasks.jsonController extends AppController 
{ 

} 

В чем проблема и как исправить это, не добавляя маршрут или файл просмотра json. [Я использую CakePHP 3.0]

+0

Что происходит, когда вы идете к '" HTTP: // локальный/торт/tasks' – jszobody

+0

Это показывает список задач в веб-просмотра –

+0

Что маршрутизатор расширения имеют вы определили – drmonkeyninja

ответ

2

Похоже, вы не позволили Cake знать, что расширение файла .json. В результате Торт ищет Tasks.jsonController. Вы хотите, чтобы добавить это в конфигурационном файле/routes.php: -

Router::extensions(['json']); 

Смотрите документацию по routing file extensions для более подробной информации.

+0

Я бы сказал, что он будет установлен по умолчанию, чтобы разрешить json-ответ. –

Смежные вопросы