Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel验证-取决于另一个输入字段的值_Php_Laravel - Fatal编程技术网

Php Laravel验证-取决于另一个输入字段的值

Php Laravel验证-取决于另一个输入字段的值,php,laravel,Php,Laravel,我有两个字段status和releaseYear以及productionYear。我必须证明: $request-> 'productionYear' => 'nullable|digits:4', 'releaseYear' => 'required|digits:4|after_or_equal:year_of_production', 'status' =>'required|in:Released,UnRelease

我有两个字段status和releaseYear以及productionYear。我必须证明:

 $request->
    'productionYear' => 'nullable|digits:4',
    'releaseYear'    => 'required|digits:4|after_or_equal:year_of_production',
    'status'         =>'required|in:Released,UnReleased',
 ]);
如何进行以下验证: 如果状态设置为“已发布”,则生产年份和发布年份不应大于今年


如果“状态”设置为“未发布”,则生产年份不应大于今年起的一年

您可以使用规则
lte
如下所示:

'productionYear' => 'nullable|digits:4|lte:releaseYear',
'releaseYear'    => 'required|digits:4',

请参阅。

您可以尝试以下自定义验证。我还没有测试,希望这会给你一个想法

    use Illuminate\Support\Facades\Input;


    'status'         => 'required|in:Released,UnReleased',
    'productionYear' => [
            'nullable',
            'digits:4',
            function($attribute, $value, $fail) {
                $status = Input::get('status'); // Retrieve status

                if ($status === 'Released' && $value > now()->year) {
                    return $fail($attribute.' is invalid.');
                } elseif ($status === 'UnReleased' && $value > (now()->year + 1)) {
                    return $fail($attribute.' is invalid.');
                }
            },
        ],