如何在Blade(Laravel 5.3)中设置一个变量?

4
我试过像这样:

我尝试像这样:

...

    @if(is_null($key['p3']))
        {{--*/$p3 = $key['p3']/*--}}
    @else
        {{ 0 }}
    @endif
    @if(is_null($key['wabku']))
        {{--*/$wabku = $key['wabku']/*--}}
    @else
        {{ 0 }}
    @endif
    <td class="tg-rv4w" width="5%">
        {{ number_format($p3 - $wabku,0,',','.') }}
    </td>

...

但是,它没有起作用。

有没有人可以帮助我?


3
在这里查看解决方案:https://dev59.com/dGcs5IYBdhLWcg3wRBtQ - Raghavendra N
@Raghavendra N,我尝试过这样做。但是它没有起作用。 - samuel toh
3
  1. 不要这样做。在你的控制器或视图合成器中设置您的变量。
  2. 如果您非常必须这样做,请打开<?php标签,并尽可能保持简短/清洁/简单。实际上,划掉刚才的话,还是遵循#1。
- jszobody
1个回答

1

您正在使用 Laravel 4 模板注释语法来定义/设置变量,这可能在 L5.x 中无法正常工作。

但是您可以尝试 @php ($p3 = $key ['p3'])

或者

@php
$p3 = $key['p3']
@endphp

上面两个是相同的。
进一步创建自己的服务提供程序,例如: 1. 创建 BladeServiceProvider:
<?php 
//app/Providers/BladeServiceProvider.php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class BladeServiceProvider extends ServiceProvider
{
    public function boot()
    {
        /* @datetime($var) */
        \Blade::extend(function($view, $compiler)
        {
            $pattern = $compiler->createOpenMatcher('datetime');

            return preg_replace($pattern, '$1<?php echo $2->format(\'m/d/Y H:i\')); ?>', $view);
        });

        /* @eval($var++) */
        \Blade::extend(function($view)
        {
            return preg_replace('/\@eval\((.+)\)/', '<?php ${1}; ?>', $view);
        });
    }

    public function register()
    {
        //
    }
}

2 注册 BladeServiceProvider:


<?php
//in config/app.php add
return [

    // ...

    'providers' => [

        // ...

        'App\Providers\BladeServiceProvider',

清除编译文件 artisan clear-compiled 给变量赋值 @datetime($updated_at)

或者

@eval($var = 1)

参考来源:Laravel 5替代方案

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接