【问题标题】:how can be write php inside the laravel's blade page?如何在 laravel 的刀片页面中编写 php?
【发布时间】:2020-08-26 22:30:43
【问题描述】:

我是这样写的,但没有得到输出。

@php
  @if(isset($value['0']['cmsg'])) 
    $cmsg = json_decode($value['0']['cmsg']);
  @endif
  @if(isset($value['0']['cmsgerr'])) 
    $cmsgerr = json_decode($value['0']['cmsgerr']);
  @endif
@endphp

【问题讨论】:

  • Blade 是模板引擎,它使您可以轻松地将 HTML 与 PHP 命令混合。但是,您可以在刀片 . 中使用传统的 PHP 代码
  • 另外,我在您的 php 代码中看不到任何输出命令,例如 echo、print 甚至 {}。你只是给 $cmsg 和 $cmsgerr 赋值,所以它什么也不会输出。

标签: php laravel laravel-5 laravel-blade


【解决方案1】:

好吧,当您使用 @php Blade 指令时,该块将被定义在 Illuminate\View\Compilers\BladeCompiler 的刀片编译器识别为纯 PHP 块。因此,您在 @php .... @endphp 块中编写的任何内容都应该是您想要的 PHP 代码。没有必要在 @php 块中编写其他指令,如 @if、@foreach 等,这实际上是错误的。 我希望你理解这个想法并且你现在可以轻松地修复你的代码。

【讨论】:

    【解决方案2】:

    当您在 laravel Blade 中打开 php 时,您不能再在 PHP 中使用刀片语法。所以你的代码应该是这样的:

    @php
      if(isset($value['0']['cmsg'])) {
        $cmsg = json_decode($value['0']['cmsg']);
      }
    
      if(isset($value['0']['cmsgerr'])) {
        $cmsgerr = json_decode($value['0']['cmsgerr']);
      }
    @endphp
    

    【讨论】:

      【解决方案3】:

      @php @endphp 中你应该只使用php 代码,而不是blade 代码。

      @php
        if(isset($value['0']['cmsg'])) {
          $cmsg = json_decode($value['0']['cmsg']);
        }
      
        if(isset($value['0']['cmsgerr'])) {
          $cmsgerr = json_decode($value['0']['cmsgerr']);
        }
      @endphp
      

      【讨论】:

        猜你喜欢
        • 2019-04-25
        • 1970-01-01
        • 1970-01-01
        • 2015-03-05
        • 1970-01-01
        • 1970-01-01
        • 2019-02-22
        • 1970-01-01
        • 2014-08-14
        相关资源
        最近更新 更多