【问题标题】:How can I add condition in rules laravel?如何在规则 laravel 中添加条件?
【发布时间】:2018-05-09 07:22:15
【问题描述】:

我的控制器是这样的:

<?php
use App\Http\Requests\StoreReceiveOrderRequest;
class SellController extends Controller
{
    public function receiveOrder(StoreReceiveOrderRequest $request)
    {
        dd($request->all());
        ...
    }
}

在receiveOrder方法中执行语句之前,会检查StoreReceiveOrderRequest的规则

这样的 StoreReceiveOrderRequest :

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreReceiveOrderRequest extends FormRequest
{
    public function rules()
    {
        return [
            'is_follow_up'=>'required',
            'note'=>'max:300' // I want to make this to be required if is_follow_up = n
        ];
    }
}

dd($request-&gt;all());的结果,有2个结果,取决于用户输入

如果is_follow_up = y,结果如下:

Array
(
    [is_follow_up] => y
)

如果is_follow_up = n,结果如下:

Array
(
    [is_follow_up] => n
    [note] => test
)

如果is_follow_up = n,我要备注是必需的

如果is_follow_up = y,则不需要备注

似乎必须在规则上添加条件

我该怎么做?

【问题讨论】:

    标签: laravel laravel-5 request laravel-5.3 rules


    【解决方案1】:

    已经有一个验证规则可以做到这一点。用于验证的 Laravel 文档列出了所有可用的规则。

    'note' => 'required_if:is_follow_up,n|...'
    

    Laravel 5.3 - Docs - Validation - Rule - required if

    【讨论】:

    【解决方案2】:

    只需将您的验证更改为以下-

    <?php
    namespace App\Http\Requests;
    use Illuminate\Foundation\Http\FormRequest;
        class StoreReceiveOrderRequest extends FormRequest
        {
           public function rules()
           {
             $rules = ['is_follow_up'=>'required',
               ];
    
             if (Input::get('is_follow_up')=='n') {
              $rules += [
                 'note'=>'max:300'
              ];
             }
           }
        }
    

    【讨论】:

      【解决方案3】:

      阅读 Laravel 文档以获取所有可用验证规则的列表。

      'note' => 'required_if:is_follow_up,n|...'
      

      【讨论】:

      • 看来你可以帮助我。看这个。 stackoverflow.com/questions/47726407/…。这有点不同
      • @akramwahld 我真的不明白发布已经在这里的相同答案有什么意义...... 2天后
      • @lagbox ,不关你的事,我可以随时回答任何问题,而且很明显没有违反 SO 规则,
      • 我并不是在暗示有违反规则,这不关我的事,很抱歉造成混乱
      猜你喜欢
      • 2022-01-24
      • 2018-03-15
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2019-03-18
      • 2018-05-23
      • 2020-02-03
      相关资源
      最近更新 更多