如何在 Laravel 中使用 return 来停止 Trait php 的执行

问题描述 投票:0回答:1

我有我特质的下一个代码。

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 返回同一页面。

laravel traits laravel-9
1个回答
1
投票

修改特征中的 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());
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.