【转载】laravel FormRequest表单验证,验证异常返回JSON

转自:https://www.jb51.net/article/180637.htm

通常在项目中,我们会对大量的前端提交过来的表单进行验证,如果不通过,则返回错误信息。

前端为了更好的体验,都使用ajax进行表单提交,虽然 validate() 方法能够根据前端的不同请求方式,返回不同的结果。

但是返回的json格式并不是我们想要的,这个时候,我们就需要自定义返回错误结果。

先创建一个表单请求类:

php artisan make:request TestRequest

然后在 rules() 和 messages() 方法里填写自已的验证规则和消息

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
class TestRequest extends FormRequest
{
  /**
   * 控制访问权限
   */
  public function authorize()
  {
    //注意,默认是false,改成true
    return true;
  }
  /**
   * 验证规则
   */
  public function rules()
  {
    return [
      'name' => 'required',
      'pwd' => 'required',
    ];
  }
  /**
   * 验证消息
   */
  public function messages()
  {
    return [
      'name.required' => '姓名必填',
      'pwd.required' => '密码必填',
    ];
  }
}

注意,父类 FormRequest中的 failedValidation() 方法用来处理验证失败,我们重写父类方法,来实现自已的返回。

public function failedValidation(Validator $validator)
{
  throw (new HttpResponseException(response()->json([
    'status_code' => 500,
    'message' => '请求错误',
    'data' => $validator->errors()->first(),
  ], 200)));
}
点赞
  1. 1winded说道:
    Google Chrome Windows 10
    https://t.me/site_official_1win/316
  2. Pokerdomded说道:
    Google Chrome Windows 10
    https://t.me/s/officials_pokerdom/3290
  3. RoyalFlusher说道:
    Google Chrome Windows 10
    https://t.me/s/officials_pokerdom/3856
  4. DealerShadow说道:
    Google Chrome Windows 10
    https://t.me/s/ezcash_officials
  5. LuckyBandit说道:
    Google Chrome Windows 10
    http://images.google.ki/url?q=https://t.me/officials_7k/110
  6. LuckyBandit说道:
    Google Chrome Windows 10
    В лабиринте азарта, где всякий сайт пытается привлечь обещаниями легких призов, рейтинг топ 10 онлайн казино становится той самой путеводителем, что ведет через дебри подвохов. Игрокам хайроллеров да новичков, которые устал от ложных обещаний, такой средство, чтоб почувствовать реальную rtp, словно вес ценной монеты у ладони. Минус лишней воды, только проверенные клубы, в которых выигрыш не просто показатель, а конкретная фортуна.Подобрано на основе яндексовых трендов, как ловушка, которая ловит топовые свежие тренды на рунете. Здесь минуя места для клише приёмов, каждый элемент словно ход у игре, в котором обман выявляется сразу. Профи видят: по стране тон речи и подтекстом, там юмор притворяется под совет, позволяет миновать ловушек.На https://cloud.mail.ru/public/1pe1/MmFjMPKG5 этот топ находится как готовая раздача, подготовленный на старту. Зайди, когда нужно увидеть пульс настоящей ставки, минуя мифов и провалов. Для что знает вес выигрыша, такое как держать фишки у пальцах, минуя пялиться в монитор.
  7. BrandonFug说道:
    Google Chrome Windows 10
    Сегодня сеть представляет собой неотъемлемой частью нашей жизни. Всемирная сеть обеспечивает быстрый возможность доступа к огромному массиву знаний. Благодаря интернету мы можем общаться с друзьями и партнёрами в любом месте планеты. Для работы, учёбы и бизнеса интернет стала в главный инструмент. https://outstreet.ru/yeah/547-razbor-oshibok-pochemu-promokod-ne-primenyaetsya-i-chto-delat-pokupatelyu/ Кроме того, интернет предоставляет бесконечные варианты для досуга и саморазвития. При отсутствии выхода в сеть сегодня сложно представить как бытовые, так и профессиональные задачи. Поэтому доступ к стабильному сетевому соединению считается фундаментальной необходимостью современного человека.
  8. Andrewcak说道:
    Google Chrome Windows 10
    Präparate im Internet zu bestellen ist sehr einfach. Man kann zu jeder Zeit einkaufen, ganz ohne das Zuhause verlassen zu müssen. Online-Apotheken ermöglichen einen einfachen Vergleich der Preise unterschiedlicher Shops. Die Bestellung wird bequem nach Hause geliefert. buy suhagra 100mg Dadurch entfällt sich zeitraubende Schlangestehen in der Vor-Ort- Pharmazie. Für Menschen mit dauerhaften Beschwerden gibt es oft automatische Nachbestellungen an. Zusammenfassend schont der Onlinekauf von Arzneien Zeit und Geduld.
  9. Andrewcak说道:
    Google Chrome Windows 10
    Getting medicine online is very handy. One can purchase 24/7 with no leaving home. Internet drugstores let you quickly check prices and locate the best price. The order are sent directly to your doorstep, saving a trip and hassle. vidalista 10 mg There is no requirement to wait in endless queues at a brick-and-mortar store. When dealing with long-term illnesses, auto refills make therapy stress‑free. Overall, online ordering for medicine saves your hours and energy.

发表回复

电子邮件地址不会被公开。必填项已用 * 标注