laravel验证在规则中使用Input :: get Parameter的规则

时间:2015-01-22 09:02:14

标签: php validation laravel

我想添加一个自己的规则来检查我的"是否活跃"允许标志设置。 我只想在此查询没有结果时设置此标志:

$playlist = Playlist::whereRaspberryId($raspberry_id)->whereActive(1)->first();

我的验证规则到目前为止:

Validator::extend('onlyOneActive', function($attribute, $value, $parameters)
    {
        $playlist = Playlist::whereRaspberryId($parameters['raspberry_id'])->whereActive(1)->first();
        if($playlist) {
            return false;
        }else{
            return true;
        }
    });

我的问题是参数。这是我表单中另一个字段的值。 但我怎么得到它?

这是我的$ rules数组:

# Validate Rules
    private static $rules = array(
        'name' => 'required',
        'active' => 'onlyOneActive:raspberry_id',
    );

问题: 在我自己的规则中,参数只有这个:

Array
(
    [0] => raspberry_id
)

这是合乎逻辑的。但是我想从我的表单中获取raspberry_id,而不是字符串.. 怎么让我成为id?

这不起作用:

# Validate Rules
    private static $rules = array(
        'name' => 'required',
        'active' => 'onlyOneActive:'.Input::get('raspberry_id'),
    );

得到错误:

syntax error, unexpected '.', expecting ')' 

有人有想法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

最后我明白了.. 我在我的规则中直接使用Input :: get(' raspberry_id)。 这是一个糟糕的解决方案吗?

Validator::extend('onlyOneActive', function($attribute, $value, $parameters)
    {
        $playlist = Playlist::whereRaspberryId(Input::get('raspberry_id'))->whereActive(1)->first();
        if($playlist) {
            return false;
        }else{
            return true;
        }
    });