try{}catch{}で例外を捕まえて、処理をすればよいかと思います
CakePHP
1//TestComponent.php
2
3use Cake\Controller\Component;
4use Cake\Network\Exception\BadRequestException;
5
6class TestComponent extends Component {
7
8
9 public function BadRequestError() {
10 throw new BadRequestException("TEST");
11 }
12}
13
14// TestController.php
15 public function AjaxTest() {
16 try {
17
18 $this->dummy = $this->loadComponent('Test');
19
20 $ret = $this->dummy->BadRequestError();
21
22 $returnData = array('test'=>'test');
23
24 $this->set('data',$returnData);
25 $this->set('_serialize', ['data']);
26 }
27 catch (\Exception $e) {
28 $exception_name = get_class($e);
29
30 if ($exception_name == 'Cake\Network\Exception\BadRequestException') {
31 $returnData = array('test'=>'exception!');
32
33 $this->set('data',$returnData);
34 $this->set('_serialize', ['data']);
35 }
36 }
37 }
これで、Ajax経由でjsonのデータが受信できるところまでは、確認しています
課題:
例外をCatchしてBadRequestだけ処理をしているので、それ以外の例外が発生した場合に何も返さず、タイムアウトとなりますので、そこを対処する必要があります
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。