Laravel - 如何在 blade 视图中显示 try/catch?

Laravel - How to a try/catch in blade view?

我想创建一种在视图中编译的方法,try/catch。 我如何在 Laravel 中执行此操作?

示例:

@try
<div class="laravel test">
    {{ $user->name }}
</div>
@catch(Exception $e)
    {{ $e->getMessage() }}
@endtry

您应该在您的视图中有try/catch块。视图正是:一些数据的表示。这意味着您不应该执行任何逻辑(例如异常处理)。一旦你从模型中获取数据,它就属于控制器。

如果您只是想在未定义变量的情况下显示默认值,您可以使用标准 PHP null coalescing operator 来显示默认值:

{{ $user->name ?? 'Name not set' }}

如果您需要 try..catch 在您的视图中,您可能做错了什么。但这并不意味着你永远不应该这样做。每条规则都有例外。

所以无论如何,这里是答案:

使用 <?php ?>@php @endphp 标签将原始 PHP 放在您的视图中。然后将 try..catch 放入原始 PHP.

@php
    try {
        // Try something
    } catch (\Exception $e) {
        // Do something exceptional
    }
@endphp

虽然我同意 @areed 的观点,如果您必须使用 try...catch 就会出错,但在某些奇怪的情况下,错误的方法可能会导致您走上这条路。一个实例使用相同的 blade 来容纳 paginate()get() 响应。嗯,这可能有点帮助。

<?php try{ ?> 
    //try to show something
    {{ $products->links() }}
<?php }catch(\Exception $e){ ?>
    // show something else
<?php } ?>