创建自定义的消息状态代码

时间:2019-08-26 18:58:21

标签: php cakephp http-status-code-403

我正在尝试创建自定义状态代码消息。但是,即时通讯是新的即时通讯PHP和Cakephp。所以我需要一些帮助。

我是我的FunctionsComponent,我这样做:

公共函数setStatusMsg($ code,$ method){

    switch ($code) {

        case 200: 
        $msg = 'Some msg'; 
        break;

        case 201: 
        $msg = 'Some msg'; 
        break;

        case 202: 
        $msg = 'Some msg'; 
        break;

        case 400: 
        $msg = 'Some msg'; 
        break;

        case 401: 
        $msg = 'Some msg'; 
        break;

        case 403: 
        $msg = 'Forbidden'; 
        break;

        case 404:
        $msg = 'Some msg'; 
        break;

        case 500: 
        $msg = 'Some msg'; 
        break;
    }
    return $code;
} 

如何在控制器中调用功能组件?

我尝试:$ message = $ this-> Functions-> setStatusMsg($ code);

但不起作用

2 个答案:

答案 0 :(得分:0)

我不确定您真正想做什么。如果要执行错误处理,则可以使用cakePHP错误处理API。无论如何,您可以通过以下方式执行此操作。

例如,这是您的控制人

class YourController extends AppController {
     public $components = ['Functions'];

     public function doStuff() {
        $code = 200;
        $message = $this->Functions->setStatusMsg($code);
        //Execute your code
     }

}

答案 1 :(得分:0)

This is my solution:
 Im my FunctionsComponent:

      public function getStatusMessage($code, $method) 
     {
         switch (true) {
             case $method == 'DELETE' && $code == 200:
                 $msg = 'Some message.';
                 break;
             case $method == 'DELETE' && $code == 403:
                 $msg = 'Some message.';
                 break;
             case $method == 'DELETE' && $code == 500:
                 $msg = 'Some message.';
                 break;
             case $method == 'DELETE':
                 $msg = 'Some message.';
                 break;
             case $method == 'POST' && $code == 200:
                 $msg = 'Some message.';
                 break;
             case $method == 'POST' && $code == 403:
                 $msg = 'Some message.';
                 break;
             case $method == 'POST' && $code == 500:
                 $msg = 'Some message.';
                 break;
             case $method == 'POST':
                 $msg = 'Some message.';
                 break;
             case $method == 'PUT' && $code == 200:
                 $msg = 'Some message.';
                 break;
             case $method == 'PUT' && $code == 403:
                 $msg = 'Some message.';
                 break;
             case $method =='PUT' && $code == 500:
                 $msg = 'Some message.';
                 break;
             case $method == 'PUT' && $code == 404:
                 $msg = 'Some message.';
                 break;
             case $method == 'GET' && $code == 200:
                 $msg = 'Some message.';
                 break;
             case $method == 'GET' && $code == 403:
                 $msg = 'Some message.';
                 break;
             case $method == 'GET' && $code == 500:
                 $msg = 'Some message.';
                 break;
             case $method =='GET':
                 $msg = 'Some message.';
                 break;
             default:
                 $msg = 'Some message.';
                 break;
         }
         return $msg;
     }

Im my controller:

 public function index(){
  $method = $this->request->Method();
    //my code..
  if(sucess){
    $this->setResponse($this->response->withStatus(200));
    $message = $this->Functions->getStatusMessage(200, $method);
 } else {
  $this->setResponse($this->response->withStatus(403));
  $message = $this->Functions->getStatusMessage(403, $method);