【问题标题】:Blade if(isset) is not working Laravel刀片 if(isset) 不工作 Laravel
【发布时间】:2015-04-14 08:57:32
【问题描述】:

您好,我正在尝试检查变量是否已设置或未使用刀片版本。但是原始 php 可以工作,但 刀片版本不可以。有什么帮助吗?

控制器:

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)

【问题讨论】:

  • 那个原始php版本是什么样子的?
  • if (isset($usersType)){ var_dump($usersType); } 这正在工作。但我想用刀片来做。
  • 你使用的是什么(确切)版本的 Laravel?
  • 嗯.. 尝试找到缓存的视图文件app/storage/views。如果有很多文件。全部删除并重新加载浏览器,以便仅重新生成呈现的视图
  • 删除除.gitkeep之外的所有记录。不走运.. 也在 chrome 中尝试过。

标签: php laravel


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在控制器上

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

    关于刀片文件

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:
        @isset($usersType)
          // $usersType is defined and is not null...
        @endisset
        

        详细解释请参考documentation:

        除了已经讨论过的条件指令之外,@isset@empty 指令可以用作它们各自 PHP 函数的便捷快捷方式

        【讨论】:

        • 请在您的代码中附上简短的解释。
        【解决方案5】:

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

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

        【讨论】:

        • 正确格式化您的代码。这将增加您的代码可读性。
        【解决方案6】:

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

        {{ optional($usersType) }}

        一个更复杂的例子是,如果像我一样,假设您试图在使用 old() 帮助器的视图中访问空对象的属性(即$users->type)。

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

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

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:
            @forelse ($users as $user)
                <li>{{ $user->name }}</li>
            @empty
                <p>No users</p>
            @endforelse
            

            【讨论】:

            • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
            【解决方案9】:

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

            {{{ $usersType or '' }}}
            

            【讨论】:

            • 试过..但没有运气。使用原始 php 它正在工作。我也试过 {{{ isset($usersType) ? $usersType 或 '' }}} 和 {{ isset($usersType) ? $usersType 或 '' }} 没有改善.. :(
            • 这行得通吗? {{{ isset($usersType) ? $usersType : '' }}}
            • 那么这意味着您的刀片文件没有正确解析。是否正确命名为.blade.php
            • {{ isset($usersType) ? $usersType : ' ' }} 正在工作。 bt 当我尝试这个时,它再次显示错误:
                @foreach( $usersType as $type ) {{ $type->type }}   @endforeach
            • 谢谢伙计,,,,这正是我要找的.. :-)
            猜你喜欢
            • 1970-01-01
            • 2016-09-09
            • 1970-01-01
            • 2014-02-23
            • 2017-05-23
            • 1970-01-01
            • 2014-07-04
            • 2015-03-05
            • 1970-01-01
            相关资源
            最近更新 更多