Я пытаюсь использовать AbstractRestfulController. Я создаю класс контроллера:Как обрабатывать ошибки (AbstractRestfulController)?
class MyController extends AbstractRestfulController{
public function getList(){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
public function get($id){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
public function create($data){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
public function update($id, $data){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
public function delete($id){
$data = array();
return new JsonModel(array(
'data' => $data,
));
}
}
и маршрутизация:
return array(
'router' => array(
'routes' => array(
'mylink' => array(
'type' => 'Segment',
'options' => array(
'route' => '/mylink[/:id]',
'constraints' => array(
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'MyModule\Controller\My',
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'MyModule\Controller\My' => 'MyModule\Controller\MyController',
),
),
'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
),
);
но что происходит, когда пользователь вызывает неправильный метод или неправильный идентификатор или что-нибудь еще? Я бы хотел сам справиться с этим. Как это сделать?
Но что, если есть плохой URL? Если я установил 'error/404' в 'template_map', он вернет мне стандартную текстовую/html-страницу из представления/ошибки. Я не могу назначить контроллер/модуль/все, чтобы обрабатывать ошибки? – Nips
Это не то, что вы просили. Для плохого URL-адреса вам стоит больше подумать, как ваш сайт также обслуживает стандартные страницы http? Если нет, вы можете создать стратегию просмотра 404, которая возвращает JsonModel в случае 404 ответа от маршрута. Если он также обрабатывает http, вам придется придумать стратегию, которая может определить, является ли это плохим апи-запросом или реальным пользователем, который ошибочно подключил ссылку. Я думаю, вам нужно подумать о том, что приемлемо, как я уже сказал, это не ваша ответственность за обработку ошибок ваших клиентов. То, что они получили 404 вместе с html вместо ответа json, должно быть достаточно. – Crisp