📜  laravel 表单集体添加星号 - PHP (1)

📅  最后修改于: 2023-12-03 15:32:36.088000             🧑  作者: Mango

Laravel 表单集体添加星号 - PHP

在 Laravel 中,表单是我们在网站开发中必不可少的一部分。对于表单,我们通常会在必填项上添加星号来表示其必填性。但是,如果我们需要同时为多个表单项添加星号,这可能会变得有点繁琐。

本文将介绍一种通过使用 Laravel 的 Blade 模板引擎自动为表单集体添加星号的方法。

步骤
  1. 创建一个局部视图(partial view)来渲染表单,如下所示:
<!-- _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 -->
  1. 在视图中使用 @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
  1. 在局部视图中定义 $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 -->
  1. 在视图中定义 $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() 函数来判断是否需要为该项添加星号。