【问题标题】:Setting the selected value of a dropdown option设置下拉选项的选定值
【发布时间】:2020-03-04 13:21:57
【问题描述】:

我正在 Laravel Blade 中开发一个简单的计算器应用程序。我们还没有转向模型,只是在视图和路线中工作,所以我不断遇到我还没有学会如何使用的选项。

我的应用程序运行正常,但未在 POST 的下拉列表中保留所选值。我能够将值打印到屏幕上,并且它在以后的选择器中工作。 我想我只需要在选项中编写一个 if 语句来设置所选值,但我找不到我理解/允许在这个项目中使用的语法。

    <div class="form-group">
      <select class="form-control form-control-lg" id="operatorInput" name="operatorInput" value="{{Session::get('operator')}}">
        <option value="+" @if(Session::get('operatorInput') == "+" ? "selected" : "" )@endif>Addition (+)</option>
        <option value="-" @if(Session::get('operatorInput') == "-" ? "selected" : "" )@endif>Subtraction (-)</option>   
      </select>
    </div>

我在这个例子中遇到了一个可抛出的错误,所以我知道它不正确。

【问题讨论】:

  • 不,它没有。我想设置选择,然后将其传递给 POST,以便我的下拉列表显示选择的值,直到我清除它。设置默认值只会使该值成为会话中保留然后发布的值。不过谢谢!

标签: php html laravel laravel-blade


【解决方案1】:

throwable 错误是由于在没有 \root 指示符的情况下调用 Session Facade,请改用 session 帮助器

例如routes/web.php

Route::get('/', function () {
    session(['operatorInput' => '-']);
    return view('welcome');
});

还有welcome.blade.php

<div class="form-group">
    <select class="form-control form-control-lg" id="operatorInput" name="operatorInput"
        value="{{ session('operator') }}">
        <option value="+" {{  (session('operatorInput') == "+") ? "selected" : "" }}>Addition (+)</option>
        <option value="-" {{  (session('operatorInput') == "-") ? "selected" : "" }}>Subtraction (-)</option>
    </select>
</div>

结果

您可以保留当前代码,但需要在 \Session 外观别名之前添加反斜杠 \,但我发现辅助函数对于视图文件更优雅(并且更短)

希望对你有帮助

【讨论】:

  • 我尝试在 Session 之前添加 \,但我继续收到带有“”T_STRING 错误的可抛出错误。是否有其他代码有助于添加以全面了解我正在做的事情?
  • 更新了我的答案以单独使用三元运算符而不是 @if 指令
  • 可能是在会话Session::put('operatorInput', '+');中设置值的控制器代码
  • 不使用控制器,只使用视图和路由
  • 我添加了一个使用路由的示例
猜你喜欢
  • 2011-01-22
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
相关资源
最近更新 更多