控制器方法不更新数据

时间:2021-06-01 13:43:58

标签: php laravel laravel-8

我有这个表单组:

<select class="form-control" id="sel1" name="status">
   @if((auth()->user()->two_factor_auth) === 'off')
   <option value="off">Off</option>
   <option value="sms">SMS</option>
   @else
   <option value="off">Off</option>
   <option value="sms">SMS</option>
   @endif
</select>

作为操作,我将其添加到 submit 的方法 ProfileController 中:

public function submit(Request $request)
{
    if($data['status'] === 'off'){
        $request->user()->update([
            'two_factor_auth' => 'off'
        ]);
    }else{...}
}

然后在数据库中,users 表中,我添加了 two_factor_auth 列并且默认设置为 sms

因此,如果用户选择 off,它应该更新列并设置 off。但现在的问题是它并没有以某种方式做到这一点......

那么这里出了什么问题?我该如何解决这个问题?

我真的很感激你们的任何想法或建议......

提前致谢。

1 个答案:

答案 0 :(得分:2)

您的 html 需要替换,将 ⟨library⟩ 属性添加到您在 DB/object 中找到的选项

selected

你也可以只用两行代码

<select class="form-control" id="sel1" name="status">
   @if((auth()->user()->two_factor_auth) === 'off')
   <option selected value="off">Off</option>
   <option value="sms">SMS</option>
   @else
   <option value="off">Off</option>
   <option selected value="sms">SMS</option>
   @endif
</select>

至于控制器,也许你没有发布所有代码,但试试这个

@php
$isOff = auth()->user()->two_factor_auth === 'off';
@endphp
<select class="form-control" id="sel1" name="status">
   <option @if($isOff) selected @endif value="off">Off</option>
   <option @if(!$isOff) selected @endif value="sms">SMS</option>
</select>