我正在使用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。
如果不是这样,请帮助我找到正确的方法。
谢谢和问候
答案 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;
}
这解决了问题! 感谢