`
weiqingfei
  • 浏览: 317355 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

Laravel5中,各种验证的实现,以及Json返回中文对应

    博客分类:
  • PHP
 
阅读更多

1.使用Form中的抽象方法

   Illuminate\Foundation\Http\FormRequest

    protected function getValidatorInstance()
    {
        $factory = $this->container->make('Illuminate\Validation\Factory');

        if (method_exists($this, 'validator')) {
            return $this->container->call([$this, 'validator'], compact('factory'));
        }

        return $factory->make(
            $this->all(), $this->container->call([$this, 'rules']), $this->messages(), $this->attributes()
        );
    }

 

    public function response(array $errors)
    {
        if ($this->ajax() || $this->wantsJson()) {
            return new JsonResponse($errors, 422);
        }

        return $this->redirector->to($this->getRedirectUrl())
                                        ->withInput($this->except($this->dontFlash))
                                        ->withErrors($errors, $this->errorBag);
    }

2.使用Controller中父类方法

   App\Http\Controllers\Controller->Illuminate\Foundation\Validation\ValidatesRequests

   validate->throwValidationException->buildFailedValidationResponse-> throw new HttpResponseException

 

    protected function buildFailedValidationResponse(Request $request, array $errors)
    {
        if ($request->ajax() || $request->wantsJson()) {
            return new JsonResponse($errors, 422);
        }

        return redirect()->to($this->getRedirectUrl())
                        ->withInput($request->input())
                        ->withErrors($errors, $this->errorBag());
    }

 

 

 

路由类Illuminate\Routing\Route

 

    public function run(Request $request)
    {
        $this->container = $this->container ?: new Container;

        try {
            if (!is_string($this->action['uses'])) {
                return $this->runCallable($request);
            }

            if ($this->customDispatcherIsBound()) {
                return $this->runWithCustomDispatcher($request);
            }

            return $this->runController($request);
        } catch (HttpResponseException $e) {
            return $e->getResponse();
        }
    }

 

 

 

3.手动实装

 

$validator = Validator::make($request->all(),[
            'title' => 'required',
            'name' => 'required',
        ],[
            'required' => ":attributeは必須となります。",
        ],[
            'title' => 'タイトル',
            'name' => '名前',
        ]);
        if ($validator->fails()) {
            return back()->withErrors($validator)->withInput();
        }

 response()->json()->setJsonOptions(JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)->setData($validator->errors()->getMessages());

 

 

分享到:
评论

相关推荐

    Laravel开发-laravel-jsonapi

    通过 `laravel-jsonapi`,开发者可以轻松地在 Laravel 应用程序中构建符合 JSON API 规范的接口。 ### JSON API 规范简介 JSON API 规范主要包含以下几个核心部分: 1. **数据结构**:数据以 JSON 对象的形式发送...

    Laravel开发-laravel-jsonrpc

    在 Laravel 中,可以通过抛出异常来返回错误信息,框架会自动转换成 JSON-RPC 错误响应。 2. **批处理**:JSON-RPC 2.0 允许客户端在一个请求中包含多个调用,服务器需要处理这些调用并返回一个包含所有结果或错误...

    laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例

    在failedValidation()方法中,如果表单验证失败,我们抛出一个HttpResponseException异常,它会触发一个自定义的JSON响应,包含错误状态码、消息以及具体的错误信息。这里的JSON响应格式是前端期望的格式,这样可以...

    Laravel开发-json-schema-gen

    "Laravel开发-json-schema-gen"是一个专为Laravel设计的工具,它帮助开发者生成JSON Schema,这是一种强大的数据验证规范,可以用于定义和验证JSON数据结构。本文将深入探讨Laravel开发中的JSON Schema生成器以及它...

    Laravel开发-laravel5-json-api

    在本文中,我们将深入探讨基于Laravel 5的JSON API开发。Laravel作为一个现代、优雅且功能丰富的PHP框架,为构建高效、可扩展的Web应用提供了强大的工具。当我们谈论"Laravel开发-laravel5-json-api"时,我们关注的...

    Laravel开发-laravel-multiuser-json-settings .zip.zip

    在Laravel中,你可以创建一个`Settings`模型,对应一个JSON类型的数据库字段,如`settings`。Eloquent ORM会自动处理JSON字段的序列化和反序列化。用户登录时,你可以加载其个人设置,并在需要的地方应用。同时,当...

    Laravel开发-json-api-server

    使用Laravel的中间件可以实现身份验证、授权和速率限制等功能,以保护API。例如,添加全局的`auth:api`中间件,确保只有经过验证的用户才能访问API: ```php Route::group(['middleware' => 'auth:api'], ...

    Laravel开发-laravel5-jsend

    `laravel5-jsend`包的目的是将JSEND标准集成到Laravel的响应系统中,这样在处理API请求时,你可以轻松地返回符合JSEND规范的响应。通过使用这个包,开发者可以更方便地管理和封装返回给前端的数据,无论是成功的结果...

    Laravel开发-jsonseeder

    5. **定义Seeder逻辑**:在新生成的Seeder类中,你需要指定JSON文件的路径,并调用`$this->json()->fromFile($filePath);`方法加载数据。 6. **运行Seeder**:最后,通过`...

    Laravel开发-l5-swagger

    2. **模型绑定**:如果你使用了 Laravel 的模型绑定,记得在注解中指定对应的参数类型。 3. **版本管理**:为不同的 API 版本创建独立的 Swagger 文档,以避免混淆。 4. **错误处理**:不要忘记在 API 操作中处理...

    Laravel开发-base64-validation

    `Laravel开发-base64-validation` 涉及的主题是关于如何在Laravel中实现对base64编码的文件进行验证。 在Laravel中,验证是通过Validator类来完成的,它提供了丰富的规则来确保输入数据的正确性。对于base64编码的...

    Laravel开发-laravel5-admin-api

    接着,创建对应的控制器`AdminUserController`,并实现`index`方法,该方法将调用`AdminUserResource`来返回数据。 ```bash php artisan make:controller AdminUserController ``` 在`AdminUserController`中,...

    Laravel开发-laravel-custom-validator

    一、理解Laravel验证机制 在Laravel中,数据验证通常在控制器的方法中进行,通过`validate`方法实现。验证失败时,Laravel会自动返回错误信息并终止请求的处理。验证规则可以是预定义的,也可以是自定义的。 二、...

    Laravel开发-calculator

    在这个项目中,“calculator”是一个用于实现基本数学计算的API,它可以执行加法、减法、乘法和除法操作。 首先,我们需要在 Laravel 项目中创建一个新的服务提供者(ServiceProvider),这是 Laravel 用来注册和...

    Laravel开发-laravel-validator

    在Laravel框架中,`laravel-validator`是其内置的一个强大功能,用于处理表单验证。这个组件使得开发者能够方便地定义验证规则,确保输入数据的准确性和安全性。本篇文章将深入探讨`laravel-validator`的使用方法、...

    Laravel开发-parser

    本项目聚焦于“Laravel开发-parser”,主要是为了实现XML、XSD、Class和JSON数据的解析,并转换成数组,这在处理各种类型的数据交换和存储时非常有用。 XML(eXtensible Markup Language)是一种标记语言,常用于...

    Laravel开发-translation

    - 每个语言目录下包含一系列的`.json`文件,对应不同的功能或模块,如`messages.json`用于通用消息,`validation.json`用于验证错误消息。 2. **使用翻译**: - 使用`trans()`函数来获取翻译字符串,例如`trans('...

    Laravel开发-laravel-token

    在Laravel框架中,令牌(Token)主要用于身份验证和安全性的关键方面,特别是表单提交、API调用以及跨站请求伪造(CSRF)防护。本文将深入探讨Laravel中的令牌管理,特别是在Laravel 4版本中的应用。 一、CSRF...

    Laravel开发-laravel-endpoint

    5. **数据验证**:Laravel-endpoint可能会集成Laravel的内置表单请求验证,使得在处理请求时的数据验证变得简单。只需定义验证规则,系统会自动处理错误并返回合适的响应。 6. **响应处理**:为了保持RESTful风格,...

    Laravel开发-laravel-apicontroller

    3. **Laravel 5中的API开发**: Laravel 5 提供了`api`路由组,可以方便地定义API路由,并且可以自动处理JWT认证。此外,`ResourceController`类可以帮助快速创建CRUD操作,返回JSON响应。 4. **Lumen 5中的API...

Global site tag (gtag.js) - Google Analytics