我希望清理一些代码。只是为了使事情变得更紧凑。 尽管我当前的代码运行良好,但我还是想尝试一下。
目前我在考勤卷上有3个按钮,该按钮跳到控制器内的另一个公共功能,但主要区别是它们插入记录中的值和显示的消息
This is my controller
public function paid($id)
{
$r = Roll::find($id);
$rollid = Rollmapping::latest()->value('id');
if ($r != null)
{
$r->status = "C";
$r->paidrollid = $rollid;
$r->save();
Alert::Success('Member Paid', 'Member Paid Cash')->autoclose(1500);
return redirect(action('RollController@index'));
}
return redirect(action('RollController@index'));
}
public function voucher($id)
{
$r = Roll::find($id);
$rollid = Rollmapping::latest()->value('id');
if ($r != null)
{
// Check if ActiveKids Balance is not less than 0
if ($r->member->ActiveKids->sum('balance') >= 10)
{
// Update Roll Status
$r->status = "V";
$r->paidrollid = $rollid;
$r->save();
// Insert Record into ActiveKids Voucher
$voucher = new ActiveKids();
$voucher->member_id = $r->member_id;
$voucher->voucher_number = 'Weekly Subs';
$voucher->balance = -10;
$voucher->date_received = Carbon::now()->toDateString();
$voucher->save();
if(ActiveKids::Where('member_id','=', $r->member_id)->sum('balance') = 0)
{
Alert::Success("Paid", "Member Voucer Balance is now $0")->autoclose(1500);
}
else
{
Alert::Success("Paid", "Member paid from Voucher Balance")->autoclose(1500);
}
return redirect(action('RollController@index'));
}
else
{
//Not Enough money in the account
Alert::Error("Error", "Insufficient Active Kids Balance")->autoclose(1500);
return redirect(action('RollController@index'));
}
}
return redirect(action('RollController@index'));
}
public function notpaid($id)
{
$r = Roll::find($id);
if ($r != null)
{
$r->status = "P";
$r->save();
return redirect(action('RollController@index'))->with ('success', 'Member Present');
}
return redirect(action('RollController@index'));
}
我将其链接到具有第二个值的1个函数的链接 例如(如果可能)
public function paid($id, $type)
然后我可以使用IF语句
if($type = 'C')
//Action for $type = C
elseif($type = 'V')
//Action for $type = V
elseif($type = 'P')
//Action for $type = P
endif
这是视图中的3按钮
<a href="{{action('RollController@paid', $r->id)}}" title="Paid" class="btn btn-success btn-round"><i class="material-icons">done</i></a>
<a href="{{action('RollController@voucher', $r->id)}}" title="Voucher" class="btn btn-info btn-round"><i class ="material-icons">local_activity</i></a>
<a href="{{action('RollController@notpaid', $r->id)}}" title="Not Paid" class="btn btn-danger btn-round"><i class="material-icons">close</i></a>
所以我希望有这样的东西
<a href="{{action('RollController@paid', $r->id, 'C')}}" .....
<a href="{{action('RollController@paid', $r->id, 'V')}}" .....
<a href="{{action('RollController@paid', $r->id, 'P')}}" .....
会没事的
答案 0 :(得分:0)
是的,您可以假设它们都是相同的请求类型。您将需要处理控制器内部的逻辑,然后处理事件总线或事件函数以完成其余工作。例如
if($request->input('feature') == $PAID){
$this->paid($request);
} elseif($request->input('feature') == $VOUCHER){
$this->voucher($request);
} else{
$this->notPaid($request)
}
我敢肯定,有一种更好的方法可以完成此操作,而不是嵌套else语句,但这对于您所要求的应该可以正常工作。
但是,如果您不喜欢这样做,可以使用反射(如果选择此路径,请确保您具有良好的错误处理能力)