2

在我的 laravel 5.5 api 中,我有很多响应消息,例如“您成功完成了一些操作..”。

目前,我已将它们作为常量存储在使用它们的控制器中。我想将它们全部移动到一个位置,因此如果以后需要更改它们,我不必在每个控制器中寻找它们。

这个用例的最佳方法是什么?

4

4 回答 4

2

Laravel 本地化怎么样?然后将其用作trans('success-message-key-here')

于 2017-09-14T11:31:06.977 回答
1

在您的用例中,我会制作静态函数来以相同的方式调用响应。

class ResponseMessage
{
    public static function succesfulResponse()
    {
        return response('successfull', 200);
    }

    public static function failedResponse()
    {
        return response('fail', 400);
    }
}

用例:

...

return ResponseMessage::succesfulResponse();

另一种方法是采用父控制器,它通常只是Controller在您的控制器文件夹中命名,您从中扩展。

class controller
{
    public function succesfulResponse()
    {
        return response('successfull', 200);
    }
}

现在您不在静态上下文中,但如果您从它扩展,则可以使用这些函数。

class yourController extends Controller
{
    public function get($id) {
        ...

        return $this->succesfulResponse();
    }
}
于 2017-09-14T11:34:02.547 回答
1

即使您只支持一种语言,您也可以使用翻译文件。

在您的控制器中,您将拥有以下内容:

$message = \Lang::get('directory/file.str1');

还有你的翻译文件:

return [
   'str1' => 'You successfully completed some action.',
];
于 2017-09-14T11:30:55.630 回答
0

resource/lang/en目录中(换句话说,本地化,您可以像这样放置您的消息

apiMessage.php

return [

    'success' => 'success message',

];

然后在你的控制器中你可以这样调用

public function somefunction(Request $request)
    {
        // your logic 
        return response()->json(__('apiMessages.success'));
    }

此处en文件夹表示您的本地语言(默认为英语,符号为 en)

于 2017-09-14T12:07:53.130 回答