Добавление нового поля, содержащего файл в Laravel регистрации - PullRequest
0 голосов
/ 12 января 2020

Я хотел настроить систему аутентификации Laravel, добавив в нее дополнительные поля. Я хотел, чтобы пользователь загружал несколько изображений во время регистрации, и я не уверен, что добавить в метод RegisterController create() для добавления имени файла в базу данных, а также самого файла в папку publi c.

RegisterController

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        "address"=> $data['address'],
        "phone"=> $data['phone'],
        "git"=> $data['git'],
        "line"=> $data['line'],
        "dob"=> $data['dob'],
        "score",
        "ktp",
        "cv",
    ]);
}

Как видите, я хотел, чтобы поля 'score', 'ktp' и 'cv' были заполнены изображениями. Так что я должен добавить к нему, чтобы хранить их в PHPMyAdmin и в publi c?

Форма

<form class="need-validation" method="POST" action="{{ route('register') }}" enctype="multipart/form-data">
    @csrf
    <h3>Team</h3>
    <div class="form-col">
        <div class="form-left">
            <div class=" form-group">
                <!-- Username -->
                <label for="validationDefault01">Username</label>
                <input name="name" type="text" class="form-control @error('name') is-invalid @enderror"
                       id="name validationDefault01" placeholder="Username" value="{{ old('name') }}" required
                       autocomplete="name" autofocus>
                @error('name')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                 </span>
                @enderror
            </div>
            <div class="  form-group">
                <!-- Email -->
                <label for="validationDefault02 inputEmail1">Email</label>
                <input type="email" class="form-control @error('email') is-invalid @enderror"
                       id="email validationDefault02 InputEmail1" placeholder="Email" name="email"
                       value="{{ old('email') }}" required autocomplete="email">

                @error('email')
                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                @enderror
            </div>
        </div>
        <div class="form-right">
            <div class=" form-group">
                <!-- Password -->
                <label for="validationDefault03 inputPassword1">Password</label>
                <input type="password" class="form-control @error('password') is-invalid @enderror"
                       id="password validationDefault03 inputPassword1" placeholder="Password" name="password" required
                       autocomplete="new-password">

                @error('password')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                 </span>
                @enderror
            </div>
            <div class=" form-group">
                <label for="validationDefault04 inputPassword2">Confirm Password</label>
                <input type="password" class="form-control" id="password-confirm validationDefault04 inputPassword2"
                       placeholder="Confirm Password" name="password_confirmation" required autocomplete="new-password">
            </div>
        </div>
    </div>
    <div class="sec">

        <div class=" form-group">
            <!-- Leader Address -->
            <label for="validationDefault07">Address</label>
            <input name="address" type="text" class="form-control" id="validationDefault07" placeholder="Address"
                   required>
        </div>
        <div class=" form-group">
            <!-- Leader Phone Number -->
            <label for="validationDefault08">Phone Number</label>
            <input name="phone" type="tel" class="form-control validationDefault08" placeholder="Phone Number" required>
        </div>
        <div class=" form-group">
            <!-- Leader Git ID -->
            <label for="validationDefault09">Git ID</label>
            <input name="git" type="text" class="form-control" id="validationDefault09" placeholder="Git ID" required>
        </div>
    </div>
    <div class="form-right">
        <div class=" form-group">
            <!-- Leader Line ID -->
            <label for="validationDefault10">Line ID</label>
            <input name="line" type="text" class="form-control" id="validationDefault10" placeholder="Line ID" required>
        </div>
        <div class=" form-group">
            <!-- Leader DOB -->
            <label for="validationDefault11">Date of Birth</label>
            <input name="dob" type="text" class="form-control" onfocus="(this.type='date')" id="validationDefault11"
                   placeholder="Date of Birth" required>
        </div>
        <div class="form-group input-group">
            <!-- Leader Test -->
            <div class="custom-file">
                <input name="score" type="file" class="custom-file-input" id="inputGroupFile01"
                       aria-describedby="inputGroupFileAddon01" required>
                <label class="custom-file-label" for="inputGroupFile01">Upload your Test Result</label>
            </div>
        </div>
        <div class="form-group input-group">
            <!-- Leader Test -->
            <div class="custom-file">
                <input name="ktp" type="file" class="custom-file-input" id="inputGroupFile01"
                       aria-describedby="inputGroupFileAddon01" required>
                <label class="custom-file-label" for="inputGroupFile01">Upload your ID Card</label>
            </div>
        </div>
        <div class="form-group input-group">
            <!-- Leader Test -->
            <div class="custom-file">
                <input name="cv" type="file" class="custom-file-input" id="inputGroupFile01"
                       aria-describedby="inputGroupFileAddon01" required>
                <label class="custom-file-label" for="inputGroupFile01">Upload your CV</label>
            </div>
        </div>
    </div>
</form>

1 Ответ

0 голосов
/ 12 января 2020

действительно легко добавить дополнительные поля в пользовательскую таблицу и вставить их, в то время как регистрация пользователя не изменяет текущий контроллер регистра. Сохраните его как обычный вызов зарегистрированного метода и обновите дополнительные поля пользовательской таблицы в этом методе. Проверьте регистр контроллера ниже.

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|min:6|confirmed',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }

/**
     * The user has been registered.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function registered(Request $request, $user)
    {
        //upload files
        $data = $request->only(['address','phone','git','line','dob','score','ktp','cv']);
        $user->update($data);
        return redirect('send-to-home');
    }
}

Примечание: зарегистрированный метод является частью метода черты RegistersUsers, который вызывается при регистрации пользователя.

...