【问题标题】:Is it possible to compare Session::get('key') value and compare it using laravel inline if else statement?是否可以比较 Session::get('key') 值并使用 laravel inline if else 语句进行比较?
【发布时间】:2019-11-14 10:15:47
【问题描述】:

我想要做的是一个过滤单选按钮。当用户基于特定年份应用过滤器时,它会进入控制器以基于该年份过滤数据结果并返回具有新值的视图。但是当页面刷新时,会反映按年份过滤的值,只是单选按钮没有被选中,默认的全部单选按钮是检查。

我所做的是根据单击的单选按钮的值将单选按钮的 id 存储在控制器的 Session 中。如果单选按钮的 id 与会话中存储的 id 匹配,则应检查该单选按钮。

Index.blade.php

<label>
  <input type="radio" name="year" id="tab" value="_all" class="flat-red filter" checked="checked"> All
</label>

@foreach ($years as $year)
  <label>
      <input type="radio" name="year" id="id{{$year->year}}" value="{{ $year->year }}" class="flat-red filter" checked = {{ Session::get('radio') == "id{{$year->year}}" ? 'checked' : 'false' }}> {{$year->year}}
  </label>
@endforeach

<button type="submit" class="btn btn-primary btn-sm pull-right">Apply Filter</button>

StatisticsController.php

session(['radio' => 'id'.request('year')]);
return view('statistics.index', $counts, compact('years'));

我遇到的错误

syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM)

我尝试过的方法, 1. 使用JS查看点击了哪个单选按钮并保存在本地会话中。

我做错了什么或错过了什么?

【问题讨论】:

  • 哪一行抛出该错误?您尝试过什么来调试此问题?
  • year}}" ? 'checked' : 'false' }}> {{$year->year}} 来自这行代码
  • 你试过这样比较吗? checked = {{ session('radio') == "id".$year-&gt;year ? 'checked' : 'false' }}

标签: php eloquent laravel-6


【解决方案1】:

{{ }} 中的所有内容都是 PHP。 {{ }} 被 Blade Compiler 替换为如下内容:

<?php echo e(...); ?>

所以基本上只是在{{ }}之间使用常规的PHP语法:

{{ Session::get('radio') == "id{$year->year}" ? 'checked' : 'false' }}

{{ }} 中包含{{ }} 会破坏该 echo 语句的编译。

【讨论】:

  • 好的,谢谢!我将代码更改为&lt;input type="radio" name="year" id="id{{$year-&gt;year}}" value="{{ $year-&gt;year }}" class="flat-red filter" {{ Session::get('radio') == "id{$year-&gt;year}" ? 'checked' : ' ' }}&gt; 完美运行!
【解决方案2】:

一种解决方案可能是在控制器中读取该会话变量并将其注入到您的模板中。

不要在模板中添加更多逻辑,这不是模板引擎的用途 - 更好地解耦这些逻辑。这有助于您保持代码的可维护性。刀片模板不需要知道任何有关会话的信息

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 2022-11-16
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2019-07-24
    • 2016-03-08
    相关资源
    最近更新 更多