如何在Laravel中的自定义验证中使用两个字段

时间:2016-10-15 13:47:10

标签: laravel validation

有人可以帮我从$validator->getData()获得单一价值吗?我想在查询中使用时间和标题,但似乎我无法获得时间的价值。

以下是规则:

$this->validate($request, [
    'name'  => 'required|min:5|max:15',
    'title' => 'required|min:5|max:100|availablee',
    'time'  => 'required|available|duration'
]);

这是availablee的代码,我可以通过$value获取标题的值,但我无法从array_get获得时间值。

<?php

Validator::extend('availablee', function ($attribute, $value, $parameters, $validator) {
    $time1 = array_get($validator->getData(), $parameters[4]);
    $time = explode(" - ", $time1);

    $start = $this->change_date_format($time[0]);
    $end = $this->change_date_format($time[1]);

    // Search for any possible clash with available events
    $scene1 = DB::table('events')
        ->where('title', '==', $value)
        ->where('start_time', '<=', $start)
        ->where('end_time', '>=', $end)
        ->count();

    if ($scene1 > 0) {
        return false;
    }

    return true;
});

这段代码给了我......

  

CheckRoomAvailability.php第83行中的ErrorException:未定义的偏移量:   4

1 个答案:

答案 0 :(得分:0)

使用此代码完成

$time1 = $validator->getData();     
$time = explode(" - ",$time1['time'] );

而不是

    $time1 = array_get($validator->getData(), $parameters[4]); 
    $time = explode(" - ",$time1 );