Blade if(isset) 不工作 Laravel

Blade if(isset) is not working Laravel

您好,我正在尝试使用 blade 版本检查变量是否已设置。但是 原始 php 可以使用 blade 版本不能使用 。有帮助吗?

控制器:

public function viewRegistrationForm()
{
    $usersType = UsersType::all();
    return View::make('search')->with('usersType',$usersType);
}

查看:

{{ $usersType or '' }}

显示错误:

未定义变量:usersType(视图:C:\xampp\htdocs\clubhub\app\views\search.blade.php)

如果要回显,请使用 3 个花括号

{{{ $usersType or '' }}}

{{ $usersType or '' }} 工作正常。这里的问题是你的 foreach 循环:

@foreach( $usersType as $type )
    <input type="checkbox" class='default-checkbox'> <span>{{ $type->type }}</span> &nbsp; 
@endforeach

我建议你把它放在 @if():

@if(isset($usersType))
    @foreach( $usersType as $type )
        <input type="checkbox" class='default-checkbox'> <span>{{ $type->type }}</span> &nbsp; 
    @endforeach
@endif

您也可以使用@forelse。简单易行。

@forelse ($users as $user)
   <li>{{ $user->name }}</li>
@empty
   <p>No users</p>
@endforelse
@isset($usersType)
  // $usersType is defined and is not null...
@endisset

详细解释参考documentation:

In addition to the conditional directives already discussed, the @isset and @empty directives may be used as convenient shortcuts for their respective PHP functions

@forelse ($users as $user)
    <li>{{ $user->name }}</li>
@empty
    <p>No users</p>
@endforelse

我使用 optional() 助手解决了这个问题。使用此处的示例将是:

{{ optional($usersType) }}

一个更复杂的例子是,如果像我一样,假设您正在尝试在使用 [=13 的视图中访问空对象(即 $users->type)的 属性 =] 助手.

value="{{ old('type', optional($users)->type }}"

重要的是要注意,如果尝试访问对象的 属性,括号围绕对象变量而不是整个对象。

https://laravel.com/docs/5.8/helpers#method-optional

您可以轻松使用三元运算符:

{{ $usersType ? $usersType : '' }}

在控制器上

$data = ModelName::select('name')->get()->toArray();
return view('viewtemplatename')->with('yourVariableName', $data);

在 Blade 文件上

@if(isset($yourVariableName))
//do you work here
@endif

使用?? , 'or' 更新版本不支持。

{{ $usersType or '' }}  ❎
{{ $usersType ?? '' }} ✅

改用??{{ $usersType ?? '' }}