如果用户在laravel

时间:2017-09-17 13:02:55

标签: php laravel backpack-for-laravel

我正在使用laravel背包,在我的更新功能中,有一个表格可以使用laravel的edit按钮进行编辑,该按钮调用更新功能。

在我的表单中,我有一个expiry_date和一个month字段,可帮助我的客户更新其用户的订阅。一切正常,这是我更新功能的代码:

public function update(UpdateRequest $request)
{

    date_default_timezone_set('asia/calcutta');
    $month = $request->month;
    $expiry = new Carbon($request->expiry_date);
    $expiry_date = $expiry->addMonths($month);            
    $request['expiry_date'] = $expiry_date;

    // your additional operations before save here
    $redirect_location = parent::updateCrud($request);
    // your additional operations after save here
    // use $this->data['entry'] or $this->crud->entry
    return $redirect_location;
}

现在的问题是:

  • 每当我的客户点击编辑按钮并编辑month以外的字段并点击更新时,它会再次计算到期日期,但我的客户点击按钮更新其用户的其他一些详细信息。

我想问一下是否有任何方法可以帮助我找到:

如果用户点击select of month并从选择中选择了一个选项,则只执行adding month to expiry_date code,如果没有,则只更新用户的详细信息影响原来的expiry_date。

如果不是这样,请帮助我找到正确的方法。

谢谢和问候

1 个答案:

答案 0 :(得分:0)

由于没有人回答这个问题。

我解决了它:

1)在month字段中允许空值。

2)并将月份字段的默认值设置为“0”。

像这样:

   'name' => 'month',
        'label' => "Months",
        'type' => 'select2_from_array',
        'options' => ['0' => '0','1' => '1', '3' => '3', '6' => '6', '12' => '12'],
        'allows_null' => true,
        'value' => '0'
        // 'allows_multiple' => true, // OPTIONAL; needs you to cast this to array in your model;
    ], 'update/create/both'); 

3)然后在更新函数中,如果它是'0',我调用月的最后一个值:

public function update(UpdateRequest $request) {
    date_default_timezone_set('asia/calcutta');
    $month = $request->month;
    if($month != 0)
    {
     $expiry = new Carbon($request->expiry_date);
    $expiry_date = $expiry->addMonths($month);            
    $request['expiry_date'] = $expiry_date;   
    }
    else
    {
        $retained_month  = Tag::find($request->id);
        $month = $retained_month->month;
        $request['month'] = $month;

    }


    // your additional operations before save here
    $redirect_location = parent::updateCrud($request);
    // your additional operations after save here
    // use $this->data['entry'] or $this->crud->entry
    return $redirect_location;
}

这解决了问题! 感谢