📅  最后修改于: 2023-12-03 15:32:36.088000             🧑  作者: Mango
在 Laravel 中,表单是我们在网站开发中必不可少的一部分。对于表单,我们通常会在必填项上添加星号来表示其必填性。但是,如果我们需要同时为多个表单项添加星号,这可能会变得有点繁琐。
本文将介绍一种通过使用 Laravel 的 Blade 模板引擎自动为表单集体添加星号的方法。
<!-- _form.blade.php -->
{{ csrf_field() }}
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
<label for="name" class="control-label">Name*</label>
<input id="name" type="text" class="form-control" name="name" value="{{ old('name', $model->name ?? '') }}" required>
@if ($errors->has('name'))
<span class="help-block">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
</div>
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="control-label">Email*</label>
<input id="email" type="email" class="form-control" name="email" value="{{ old('email', $model->email ?? '') }}" required>
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
<!-- more form fields here -->
@include
指令来渲染表单:@extends('layouts.app')
@section('content')
<div class="container">
<form action="{{ route('models.store') }}" method="POST">
@include('models._form')
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
@endsection
$required
变量来存储必填项的名称:<!-- _form.blade.php -->
@php
$required = ['name', 'email', 'phone'];
@endphp
{{ csrf_field() }}
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
<label for="name" class="control-label">Name{{ in_array('name', $required) ? '*' : '' }}</label>
<input id="name" type="text" class="form-control" name="name" value="{{ old('name', $model->name ?? '') }}"{{ in_array('name', $required) ? ' required' : '' }}>
@if ($errors->has('name'))
<span class="help-block">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
</div>
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="control-label">Email{{ in_array('email', $required) ? '*' : '' }}</label>
<input id="email" type="email" class="form-control" name="email" value="{{ old('email', $model->email ?? '') }}"{{ in_array('email', $required) ? ' required' : '' }}>
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
<!-- more form fields here -->
$required
变量并将其传递给局部视图:@extends('layouts.app')
@php
$required = ['name', 'email', 'phone'];
@endphp
@section('content')
<div class="container">
<form action="{{ route('models.store') }}" method="POST">
@include('models._form', ['required' => $required])
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
@endsection
现在,你的表单中每个必填项都将自动带上星号,而无需手动添加。
在 Laravel 中,通过使用 Blade 模板引擎,可以轻松实现表单中多个必填项的集体添加星号的需求。通过将必填项名称存储在一个数组中,我们可以使用 in_array()
函数来判断是否需要为该项添加星号。