Laravel表单请求验证后添加自定义变量

时间:2016-08-03 08:13:36

标签: validation laravel

这是我的表单请求代码,我想在验证成功后添加新变量,所以我可以在我的控制器上访问该变量:

class CouponRequest extends Request
{
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'start_year' => 'required',
            'start_month' => 'required',
            'start_day' => 'required',
            'start_time' => 'required',
            'finish_year' => 'required',
            'finish_month' => 'required',
            'finish_day' => 'required',
            'finish_time' => 'required',
        ];
    }

    public function afterValidation()
    {
        $this->start_date = Carbon::create( $this->start_year, $this->start_month, $this->start_day );
    }
}

因此在验证没有错误后,我可以在我的控制器上调用此实例:

$request->start_date;

我可以这样做吗?

5 个答案:

答案 0 :(得分:2)

你可以这样做

from lxml import html

with gzip.open(f, 'rb') as f:
    file_content = f.read()
    tree = html.fromstring(file_content)
    name = tree.xpath('//label/name/text()')

然后以

的形式访问控制器中的属性
productData_1 = {'product_1': '18', 'product_2': '15', 'product_3': '10', 'product_4': '9'}
productData_2 = {'product_1': '18', 'product_3': '12', 'product_2': '15'}

matched_keys = []
unmatched_keys = []
matched_value = []
unmatched_value = []

for ind,value in productData_1.items():
    if ind in productData_2.keys():
        matched_keys.append( ind )
        if value in productData_2.values():
            matched_value.append( value )
        else:
            unmatched_value.append( value )
    else:
        unmatched_keys.append( ind )
        if value in productData_2.values():
            matched_value.append( value )
        else:
            unmatched_value.append( value )



print matched_keys
print unmatched_keys

print matched_value
print unmatched_value

答案 1 :(得分:1)

在表单请求中,使用功能Requiredfieldvalidator.Enabled = False

prepareForValidation()

干杯!

答案 2 :(得分:0)

我在Controller中进行了验证。该方法有一个" Request $ request"参数。我有一个我这样做:

$input = $request->all();
$input['my_new_field] = 'the_data';

答案 3 :(得分:0)

成功请求操作后,我正在使用此方法。

来源:50116187/1101038

public function withValidator(Validator $validator)
{
    if ( $validator->fails() ) {

        \Log::info('Error! No Manipulation!');

    }else{

        $this->merge([
            'custom' => 'Test Manipulation!'
        ]);

        \Log::info('Success Manipulation!');
    }

}

答案 4 :(得分:0)

以上所有方法都有效,但 IMO 我会覆盖表单请求类中的 passedValidation 方法。此方法在验证检查通过后调用,从而保持数据清洁。

例如

public function passedValidation()
{
    $this->merge([
       'start_date' => Carbon::create( $this->start_year, $this->start_month, $this->start_day )
    ]));
}

如果您现在转储数据,您应该也会看到新的 start_date 值。