如何在刀片部分中为变量设置默认值?
例如,我有2个变量:
我想要的女巫默认是真的。
@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);
});
}
但覆盖控制器的错误值。
答案 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);
}