如何在规则 laravel 中添加条件?
How can I add condition in rules laravel?
我的控制器是这样的:
<?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->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,则不需要注释
看来必须在规则上添加条件
我该怎么做?
只需将您的验证更改为以下内容-
<?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'
];
}
}
}
已经有一个验证规则可以做到这一点。 Laravel 验证文档列出了所有可用规则。
'note' => 'required_if:is_follow_up,n|...'
阅读 Laravel 文档以获取所有可用验证规则的列表。
'note' => 'required_if:is_follow_up,n|...'
我的控制器是这样的:
<?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->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,则不需要注释
看来必须在规则上添加条件
我该怎么做?
只需将您的验证更改为以下内容-
<?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'
];
}
}
}
已经有一个验证规则可以做到这一点。 Laravel 验证文档列出了所有可用规则。
'note' => 'required_if:is_follow_up,n|...'
阅读 Laravel 文档以获取所有可用验证规则的列表。
'note' => 'required_if:is_follow_up,n|...'