【问题标题】:Laravel - how to create a dropdown with specific entry selected depending upon database valueLaravel - 如何根据数据库值创建一个带有特定条目的下拉列表
【发布时间】:2019-02-04 22:04:15
【问题描述】:

我有两种情况,但最简单的情况如下: 一个数据库列用一个表示时间的字符串填充(例如,在 4:30 上课)。当用户添加新条目时,时间由用户从下拉列表中选择。在编辑时,下拉数据从控制器以及要编辑的数据库行传递($classtime 和扩展名 $classtime->start_time,其中包含用户选择的原始值...04:30)。相关代码为:

$classtime = Classtime::find($id);    /* get the db row to be edited */
$data = array(
                'clubs' => Club::all(),
                'start_times' => [
                    '09:00','09:30','10:00','10:30','11:00','11:30','12:00','12:30','01:00','01:30','02:00','02:30','03:00','03:30','04:00','04:30','05:00','05:30','06:00','06:30','07:00','07:30','08:00','08:30', 
                ],);

添加一个新条目将(例如)04:30 作为字符串存储在“start_time”字段中。当需要编辑条目时,我希望下拉列表显示 04:30 作为所选值。 在视图中构建列表时,我有以下内容:

@foreach($data['start_times'] as $stime)
         <option value="{{ $stime }}">{{ $stime }}</option>
@endforeach

我还有 $classtime 作为数据库记录。

我的问题是: 如何将 $stime(数组元素)与数据库行中的当前值进行比较 ($classtime->start_time) 并基于相等的比较,将“选定”插入选项? 我原以为这是一个常见问题,但我找不到任何似乎与之匹配的东西,也无法从我找到的回复中得出解决方案。 任何帮助,将不胜感激。 干杯 杰夫

【问题讨论】:

    标签: laravel laravel-blade


    【解决方案1】:

    你可以这样做:

    @foreach($data['start_times'] as $stime)
         <option value="{{ $stime }}" @if(App\Classtime::latest()->first()->start_time === $stime) selected @endif>{{ $stime }}</option>
    @endforeach
    

    【讨论】:

    • 嗨,@user1988589 如果这个答案已经解决了您的问题,请考虑点击复选标记接受它。
    • 更新:上述解决方案适用于字符串数据,但适用于整数数据失败。结果我不得不“强制转换”变量以允许 if 匹配按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 2016-07-06
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多