Blade if (isset) не работает Laravel

Привет, я пытаюсь проверить, что переменная уже установлена ​​или нет, используя версию blade-сервера. Но raw php работает, но версия для блейдов не. Любая помощь?

контроллер:

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

Вид:

{{ $usersType or '' }}

отображается ошибка:

Undefined variable: usersType (Вид: C:\xampp\htdocs\clubhub\app\views\search.blade.php)

Ответ 1

{{ $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

Ответ 2

@isset($usersType)
  // $usersType is defined and is not null...
@endisset

Ответ 3

Используйте 3 фигурных скобки, если вы хотите эхо

{{{ $usersType or '' }}}

Ответ 4

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

Ответ 5

Я решил это с помощью помощника optional(). Используя пример здесь, это будет:

{{ optional($usersType) }}

Более сложный пример будет, если, как и я, скажем, что вы пытаетесь получить доступ к свойству нулевого объекта (например, $users->type) в представлении, которое использует помощник old().

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

Важно отметить, что скобки заключаются в переменную объекта, а не в целую, если вы пытаетесь получить доступ к свойству объекта.

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

Ответ 6

Вы можете легко использовать троичный оператор

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