我目前正在构建一个功能,用户可以从选择框中选择一个选项,一旦一个项目被选中,你可以点击一个按钮,点击我的端点提交并存储它。
但是,如果我不选择任何东西,然后点击按钮,它只会在同一端点上点击404页面。
叶片
下面包含选择框和按钮的刀片语法。
<div class="row align-items-center">
<div class="col-md">
<small class="text-success">
please select one of the teams below to store your preference.
</small>
{!! Form::open(['route' => ['team.create.link', $team->id],'method' => 'post', 'class' => 'needs-validation','novalidate', null]) !!}
{!! Form::select('teams[]', $teams, '', ['class' => 'custom-select', 'multiple'], ['required']) !!}
<button class="btn btn-primary btn-sm mt-3 float-right">
<i class="fas fa-fw fa-plus-circle mr-2"></i>
Add</button>
{!! Form::close() !!}
</div>
</div>
下面是用于在透视表中存储新输入的方法。
public function link(string $teamId)
{
$team= Team::findOrFail($teamId);
$links = Input::get('teams');
$link = Team::findOrFail($links);
$team->links()->attach($link);
session()->flash('success', 'Link Added.');
return back();
}
我该如何修改这个,使按钮不能点击,并返回一个必要的错误,如果一个选项没有被选中?我试过添加['required']到表单::select,但我没有运气。
有谁能给我指个方向吗?您可以使用$this->validate
验证您的请求
use IlluminateHttpRequest;
public function link(Request $reqeust, string $teamId)
{
$request->validate([
'teams' => 'required',
]);
$team = Team::findOrFail($teamId);
$links = Input::get('teams');
$link = Team::findOrFail($links);
$team->links()->attach($link);
session()->flash('success', 'Link Added.');
return back();
}
查看官方的Laravel文档验证