laravel - 如何使表单中的动态字段得到验证和要求?
问题描述
我正在尝试将动态字段添加到表单中,这些字段至少有 2 个,然后您可以添加更多,每个添加的字段都应经过验证,如果在保存时将其保留在那里,则可以删除这些字段。我的问题是,当并非所有项目都具有这些字段时,如何使它们成为必需项。
我正在创建一个问题,当它的响应类型设置为多项选择时,这些字段将出现,其中两个选项是强制性的,并且可以添加更多选项。因此,仅当响应类型为多项选择时,这些字段并不总是必需的。
我不确定在哪里添加这些字段是必需的,我尝试在 vue 规则中添加它,但这在它没有得到验证的意义上不起作用,问题将在没有强制性两个的情况下保存选项。
这是到目前为止我的表单中的代码,其中添加了选项
<div v-if="form.response_type_id === 2">
<el-divider></el-divider>
<el-row>
<el-col :span="22">
<p class="el-form-item__label">Opciones</p>
</el-col>
<el-col :span="2">
<div class="btn-link-plus action-button" @click="addOption()">
<i class="fas fa-plus"></i>
</div>
</el-col>
</el-row>
<div v-for="(option, index) in questionOptions" :key="index">
<el-row>
<el-col :span="22">
<el-form-item prop="option">
<el-input v-model="option.option"></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<div class="btn-link-delete action-button" @click="removeOption(index)"
:disabled="trashDisabled">
<i class="fas fa-trash-alt"></i>
</div>
</el-col>
</el-row>
</div>
</div>
这是我的问题的 SaveRequest
public function rules()
{
return [
'question' => 'required',
'survey_section_id' => 'required|exists:survey_section,id',
'response_type_id' => 'required|exists:response_types,id',
'optional' => 'required'
];
}
我希望如果一个人正在创建一个问题并选择多项选择,他们需要始终添加两个选项,并且他们无法保存,直到这是真的。
任何帮助,将不胜感激!谢谢!
解决方案
你可以使用 requireIf
public function rules()
{
return [
'question' => 'required',
'survey_section_id' => 'required|exists:survey_section,id',
'response_type_id' => 'required|exists:response_types,id',
'optional' => Rule::requiredIf($request->response_type_id()=='multiple')
];
}
记得导入使用 Illuminate\Validation\Rule;
推荐阅读
- verilog - 如何分配位的动态范围
- tcl - 对 HTTP 请求重用 TCP 套接字
- matlab - 在 simulink 中创建 TCP/IP 服务器块
- c# - 对多个任务使用 Task.WhenAll 时 foo.Start() 出现错误
- unity3d - 如何将新的统一 uxml(通过 ui builder)添加到游戏屏幕?
- python - 未找到没有参数的“产品”反向。尝试了 1 种模式:[u'products/(?P
[-\\w]+)/$'] - here-api - API 不适用于 Javascript 或 REST,产生 KeyError
- javascript - 基于下拉选择突出显示文本行
- ssis - 尽管作业成功,但队列中的 Datafactory Azure SSIS 集成运行时注释
- typescript - 打字稿:条件类型不起作用