Laravel - 如何在刀片视图中尝试/捕获?

时间:2015-07-14 15:37:06

标签: laravel laravel-4 blade

我想创建一种在视图中编译的方法,try / catch。 我怎么能在Laravel中做到这一点?

示例:

--cpu-quota

3 个答案:

答案 0 :(得分:17)

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

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

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

答案 1 :(得分:3)

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

无论如何,这是答案:

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

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

答案 2 :(得分:0)

虽然我同意@areed,但如果您必须使用try ... catch则出了点问题,但在某些奇怪的情况下,错误的方法可能会导致您走这条路。一个实例正在使用同一刀片来容纳paginate()get()响应。好吧,这可能会有所帮助。

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