【问题标题】:Checkboxes Processing php laravel复选框处理php laravel
【发布时间】:2021-10-05 23:17:26
【问题描述】:

我有一些复选框。如何使我可以在数据库中的一个单元格中输入多个值。例如,用户选择了数学和语言。 registration.blade.php:

@extends('layouts.app')
@section('title-block')
    Регистрация
@endsection

@section('content')

    <div class="container">
        <h1 align="center">
{{--            <a href="index.html"><img src="img/logo.jpg" alt="logo" class="home"></a>--}}
            Register
        </h1>
    </div>
    <hr>
    <div class="container" align="center">
        <form name="register" method="POST" action="{{route('user.registration')}}">
            @csrf
            <input class="text-input" type="text" placeholder="Enter your surname" name="surname" required>
            <input class="text-input" type="text" placeholder="Enter your name" name="name" required><br>

            <input class="text-input" type="text" placeholder="Enter your number" name="number" required><br>

            <input class="text-input" type="text" placeholder="Enter your father`s name" name="fathers_name" required>
            <input class="text-input" type="text" placeholder="Enter parent number" name="parents_number" required><br>

            <input class="text-input-full-width" id="password" name="password" type="password" required placeholder="Enter password"><br>

            <label for="studies"id="RegistrationForm"><b>Choose your studies</b></label><br>
            <div class="btn-group" role="group" aria-label="Basic checkbox toggle button group">
                <input type="checkbox" class="btn-check" id="btncheck1" autocomplete="off" name="btnstudies" value="Math">
                <label class="btn btn-outline-primary" for="btncheck1">Math</label>

                <input type="checkbox" class="btn-check" id="btncheck2" autocomplete="off" name="btnstudies" value="Language">
                <label class="btn btn-outline-primary" for="btncheck2">Language</label>

                <input type="checkbox" class="btn-check" id="btncheck3" autocomplete="off" name="btnstudies" value="Physics">
                <label class="btn btn-outline-primary" for="btncheck3">Physics</label>

    </div>
            <br>
            <label for="classes"id="RegistrationForm"><b>Classes</b></label><br>

            <div class="btn-group-vertical" role="group">

                <input type="radio" class="btn-check" name="btnradio" id="btnradio1" autocomplete="off" checked value="2">
                <label class="btn btn-outline-primary" for="btnradio1">2nd class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio2" autocomplete="off" value="3">
                <label class="btn btn-outline-primary" for="btnradio2" >3rd class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio3" autocomplete="off" value="4">
                <label class="btn btn-outline-primary" for="btnradio3">4th class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio1" autocomplete="off" value="5">
                <label class="btn btn-outline-primary" for="btnradio1">5th class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio2" autocomplete="off" value="6">
                <label class="btn btn-outline-primary" for="btnradio2">6th class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio3" autocomplete="off" value="7">
                <label class="btn btn-outline-primary" for="btnradio3">7th class</label>
            </div>
            <br>
            <div class="final">
                <input type="checkbox" class="check-term" id="btncheck4" autocomplete="off" required>
                <label class="check-agree" for="btncheck4">I agree with a <a href="documents/term.txt">Terms</a></label><br>
                <button class="main-button" type="submit" name="sendMe" value="1" required>Register</button><br>
{{--                <button class="main-button" required>Register</button ><br>--}}
                <br><label class="check-agree" for="btncheck5">If you have already registrated, <a href="/login"> log in</a></label>
            </div>
            <hr>

    </form>
@endsection

RegisterController.php:

<?php

namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;

class RegisterController extends Controller
{
    public function save(Request $request){
        if(Auth::check()){
            return redirect(route('user.private'));
        }

    $validateFields = $request->validate([

        'number' =>'required',
        'password' => 'required',

    ]);
        if(User::where('number',$request['number'])->exists()){
            return redirect(route('user.registration'))->withErrors([
                'number' => 'Такой пользователь уже зарегистрирован'
            ]);
        }
    $user = User::create([

        'password' => $request['password'],
        'name' => $request['name'],
        'surname'=>$request['surname'],
        'number'=>$request['number'],
        'fathers_name'=>$request['fathers_name'],
        'parents_number'=>$request['parents_number'],
        'class' => $request['btnradio'],
        'studies' => $request['btnstudies']
    ]);

    if($user){
        Auth::login($user);

        return redirect(route('user.private'));
    }
        return redirect(route('user.login'))->withErrors([
            'formError' => 'Произошла ошибка при сохранении пользователя'
        ]);
    }
}

标记的地方应该包含来自复选框的值 enter image description here

我是 laravel 和 html 的初学者。我不明白我该怎么做。我希望你能帮助我

【问题讨论】:

  • 把名字改成name="btnstudies[]",用括号接收一组值

标签: php html mysql laravel


【解决方案1】:

在输入名称中添加方括号。通过这种方式,您将能够获得每个选定的输入。例如。

// view.blade.php
<form method="POST" action="/">
    @csrf
    <input type="checkbox" name="studies[]" value="a"/>
    <input type="checkbox" name="studies[]" value="b"/>
    <input type="checkbox" name="studies[]" value="c"/>
    <input type="submit"/>
</form>
// web.php
Route::post('/', function ( Request $request ) {
    dd( $request->input('studies') ); // print array of values of selected checkboxes
});

【讨论】:

  • 当我尝试写入数据库时​​,它给了我一个数组到字符串的转换。如何在 RegisterController 中的“创建”函数中输入条目?
猜你喜欢
  • 1970-01-01
  • 2014-08-20
  • 2011-10-21
  • 2018-08-06
  • 2018-07-25
  • 2013-12-25
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
相关资源
最近更新 更多