刀片Laravel中的默认变量值

时间:2016-06-20 11:54:03

标签: laravel laravel-5 blade laravel-blade

如何在刀片部分中为变量设置默认值?

例如,我有2个变量:

  • softDelete
  • 删除

我想要的女巫默认是真的。

@if($softDelete)
    <span data-toggle="tooltip" title="Publish">
        <a href="#delete-{{ $id }}" class="btn btn-default btn-xs btn-flat">
            <i class="fa fa-check"></i>
        </a>
    </span>
@endif

@if($delete)
    <span data-toggle="tooltip" title="Delete">
        <a href="#delete-{{ $id }}" class="btn btn-danger btn-xs btn-delete btn-flat details" data-toggle="modal" data-target="#delete_modal">
            <i class="fa fa-trash"></i>
        </a>
    </span>
@endif

当我从控制器发送视图以更改某些变量的值时,视我需要的情况而定。

return view('platform.pages.blocks.property_table_actions',
    [
        'id' => $model->id,
        'delete' => false
    ]);

我尝试过提供商:

public function composeActionButtons()
{
    view()->composer('platform.pages.blocks.property_table_actions', function ($view) {
        $view
            ->with('softDelete', true)
            ->with('delete', true)
            ->with('view', true)
            ->with('edit', true);
    });
}

但覆盖控制器的错误值。

4 个答案:

答案 0 :(得分:3)

有时您可能希望回显一个变量,但您不确定该变量是否已设置。基本上,你想这样做:

{{isset($ name)? $ name:&#39;默认&#39; }}

但是,Blade不是编写三元语句,而是允许您使用以下方便的快捷方式:

{{$ name或&#39;默认&#39; }}

来自laravel docs .. 如果变量存在,它应该用isset检查..如果没有显示默认值

答案 1 :(得分:0)

我认为你以错误的方式接近这项任务 - 就个人而言。但如果你坚持,你也可以只包括一部分(我有时会这样做)。比如变量等等。

例如,像这样:

'delete' => false

那说 ,我想您可能只是在渲染视图时在控制器中分配变量。无论如何,你都要分配一个变量。为什么使用视图编写器使事情复杂化 - 当逻辑可能在您的控制器中时?只需将.bat设置为true或每个人都有。

答案 2 :(得分:0)

我找到了最好的方法:

<?php

 namespace App\Providers;

 use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\View;
 use Illuminate\Support\ServiceProvider;

 class ViewComposerServiceProvider extends ServiceProvider
{
/**
 * Bootstrap the application services.
 *
 * @return void
 */
public function boot()
{
    $this->composeActionButtons();
}

/**
 * Register the application services.
 *
 * @return void
 */
public function register()
{
    //
}

/**
 * Compose the Recent sidebar
 */
public function composeActionButtons()
{
    view()->creator('platform.pages.blocks.property_table_actions', function ($view) {
        $view
            ->with('softDelete', true)
            ->with('delete', true)
            ->with('view', true)
            ->with('edit', true);
    });

}
}

并在控制器中:

  return view('platform.pages.blocks.property_table_actions',
    [
        'id' => $model->id,
    ])
    ->with(['edit' =>false, 'softDelete' => false]);

视图创作者的工作方式几乎与视图作曲家一样;但是,在实例化视图时会立即触发它们。 我使用Creator定义的回调在view()之后立即调用,在任何 - &gt; with()之前。这使我能够为View设置默认值,然后在调用View时覆盖它,如果需要的话。

答案 3 :(得分:-2)

在Controller.php中

function __construct() {
    $softDelete= true;
    $data = array('softDelete'  => $softDelete);
    view()->share($data);
}