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>
@endforeach
Я предлагаю вам поместить это в @if()
:
@if(isset($usersType))
@foreach( $usersType as $type )
<input type="checkbox" class='default-checkbox'> <span>{{ $type->type }}</span>
@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: ''}}
Ответ 7
После нового обновления в php
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
Проверьте ссылку: https://laravel-news.com/blade-templates-null-coalesce-operator