【发布时间】:2018-05-23 09:51:24
【问题描述】:
我使用 Laravel 5.3
我的 Laravel 规则是这样的:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class AddCartRequest extends FormRequest
{
public function rules()
{
return [
'product_id'=>'required|numeric',
'delivery_address'=>'required',
'request_delivery_at' => 'required|date_format:d-m-Y H:i:s|after:120 minutes'
];
}
}
echo '<pre>';print_r($this->request->get('delivery_address'));echo '</pre>'; 的结果如下:
Array
(
[sender_name] => chelsea
[postal] => 12345
[country] => japan
[city] => tokyo
[send_date] => 09-12-2017
[send_time] =>
[information] => test
)
我想变成这样:
如果send_time为空,request_delivery_at的规则如下:
'request_delivery_at' => 'required|date_format:d-m-Y H:i:s'
所以,没有|after:120 minutes
如果 send_time 是有值的(例如 send_time = 12:30:00),request_delivery_at 的规则如下:
'request_delivery_at' => 'required|date_format:d-m-Y H:i:s|after:120 minutes'
我该怎么做?
更新:
我尝试这样:
public function rules()
{
$send_time = $this->request->get('delivery_address')['send_time'];
if($send_time)
$validation_time = '|after:120 minutes';
else
$validation_time = '';
return [
'product_id'=>'required|numeric',
'delivery_address'=>'required',
'request_delivery_at' => 'required|date_format:d-m-Y H:i:s'.$validation_time
];
}
好像有效
【问题讨论】:
-
由于您的要求非常复杂,您无法使用现有的验证规则来实现它,您必须创建自定义验证规则,我可以在 120 分钟后知道吗?
-
@SuccessMan 看起来不错,可能想在尝试访问数组元素之前检查 var 是否为空...旁注:
FormRequest是Request... @987654330 @$this->input()等等 ...这是一个Illuminate\Http\Request...您已经在请求的上下文中,$this->input('delivery_address') -
@lagbox,好的。感谢您的帮助
标签: laravel validation laravel-5.3 rules required