我有我特质的下一个代码。
trait ObraTrait
{
public function custo(Request $request)
{
$custo = array_sum($request->custo);
if ($custo != 100.00) {
return back()->withInput()->with(
'danger','Custo equal to 100.00%'
);
}
}
}
和我的控制器
public function update(UpdateObra $request, $id)
{
$this->custo($request);
....
return redirect()->route('app.obras.index')->with(
'success','Obra Atualizada com Sucesso'
);
}
答案是...
我希望控制器在 $custo != 100 时停止,它已在特征中得到验证,并使用 mensagem 返回同一页面。
修改特征中的 custo() 方法,以便在不满足条件时抛出异常,然后在控制器中捕获该异常。
特质
trait ObraTrait
{
public function custo(Request $request)
{
$custo = array_sum($request->custo);
if ($custo != 100.00) {
throw new \RuntimeException('Custo is not equal to 100.00%');
}
}
}
控制器
public function update(UpdateObra $request, $id)
{
try {
$this->custo($request);
// Rest of your update logic...
return redirect()->route('app.obras.index')
->with('success', 'Obra Atualizada com Sucesso');
} catch (\RuntimeException $e) {
return back()->withInput()->with('danger', $e->getMessage());
}
}