流明无法设置自定义验证规则

时间:2016-05-15 20:59:05

标签: laravel lumen

我尝试使用此代码设置自定义验证消息,但没有效果 -

class TestController extends Controller
{
    public function submit(Request $request)
    {
        $this->validate($request,
            [
                'items' => 'required'
            ],
            [
                'items.required' => 'test test'
            ]
        );
    }
}

但是在错误时我得到了这个回复 -

{
  "error": "The given data failed to pass validation."
}

此代码有什么问题?

UPD:

之前我编辑App\Exceptions\Handler以特定格式输入错误(在API响应中) -

{
  "error": "123"
}

此代码是未显示验证错误的原因 -

public function render($request, Exception $e)
{
    return response([
        'error' => $e->getMessage()
    ], 500);
}

我更新有关此目的的Handler::render方法

public function render($request, Exception $e) {
    $response = parent::render($request, $e);

    if (isset($response->exception) and !empty($response->exception)) {
        return response(['error' => $response->exception->getMessage()], 500);
    } else {
        return parent::render($request, $e);
    } 
}

但我认为我需要改进此代码。

1 个答案:

答案 0 :(得分:-1)

您似乎混合了验证select()rulesmessages方法有3个参数:validaterequestrules

请试试这个:

messages

最新的流明版本总是返回JSON,请参阅documentation

  

当验证失败时,public function submit(Request $request) { $rules = [ 'items' => 'required', 'otheritems' => 'required', ]; $messages = [ 'items.required' => 'Error: Please enter something.', 'otheritems.required' => 'Otheritems are also required', ]; $this->validate($request, $rules, $messages); } 帮助程序将始终返回带有相关错误消息的JSON响应。如果您没有构建仅发送JSON响应的无状态API,则应使用完整的Laravel框架。

有关$this->validate 的更新 Lumen的给定结果看起来像那样。

error

验证失败的每个项目都会在您的回复中输入一个条目。所以你的{"items":["Items are required"],"otheritems":["Otheritems are also required"]} 包需要是一个JSON数组。

自定义异常error方法:

render