如果尚未按下按钮,我正在尝试禁用或只读我的输入字段,但是在添加使其禁用或只读的条件后,我在将其发布/提交到数据库时遇到问题
<form action="{{ route('amber.timestone.home.start', $task->id) }}" method="POST" class="align-center">
{{csrf_field()}}
<td>
<input class="my-2" type="text" name="ref" value="{{ $task->ref }}"
@if(empty($task->start))
readonly
@endif
>
public function startTask($id)
{
$user = Task::find($id);
$user->start = Carbon::now();
$user->save();
return back();
}
public function endTask($id, Request $request)
{
$user = Task::find($id);
$user->end = Carbon::now();
$start = Carbon::parse($user->start);
$end = Carbon::parse($user->end);
$user->ref = request('ref');
$user->remarks = request('remarks');
$user->campaign = request('campaign');
$user->type = request('type');
$hours = $end->diffInHours($start);
$minutes = $end->diffInMinutes($start);
$seconds = $end->diffInSeconds($start);
$user->duration = $hours . ':' . $minutes . ':' . $seconds;
$user->update();
return back();
}
我尝试添加与只读条件仍然不起作用的人相同的名称的隐藏
禁用字段不会随请求一起发布,但您可以添加只读属性。
您可以做的另一件事是出于 UI 目的禁用该字段,并在下面添加具有相同名称和值的隐藏输入。
HTML是一种标记语言,它突出了数据语义,而不是数据被看到的方式(例如,使用<strong>
使文本加粗是一种完全错误的方式(。因此,您应该使用CSS自定义的文本容器(主要是<div>
或<span>
(来封装它并且是只读的。然后,就像Adam abdul shakoor建议的那样,您可以使用具有相同值的隐藏输入。你还应该考虑使用 VueJS(已经打包在 Laravel 中(,它的数据驱动方法使这种事情变得微不足道,以保持容器和输入的内容同步。
你怎么看?如果您有需要发回的值,请将其放在隐藏的输入字段中。所以你可以用css创建一个假字段,也许。但是,如果您不想发送任何数据,只是为了显示它,您可能只是不将隐藏的输入字段包含在值中。