Столбец значений радио в базе данных пуст в Laravel - PullRequest
0 голосов
/ 14 апреля 2020

Мой клинок имеет форму пользователя. Мой код работает хорошо, и все значения хранятся в базе данных, за исключением значений радиополей и радиостанций в базе данных: NULL . Я прочитал много форумов и проверил свой код соответственно, все еще не знаю, что я делаю неправильно. Любое предложение, пожалуйста. Спасибо

Blade. php

<div class="form-group row">
<label for="user_type" class="col-md-4 col-form-label text-md-right ">{{ __('User Type') }}</label>

    <div class="col-md-6">
      <label class="radio-inline control-label">
      <input id="user_type" value="user" type="radio" class="form-control @error('user_type') is-invalid 
      @enderror" name="user_type" required autocomplete="user_type">User</label>

      <label class="radio-inline control-label">
      <input id="user_type" value="company" type="radio" class="form-control @error('user_type') is- 
      invalid @enderror" name="user_type" required autocomplete="user_type">Comapny</label>

        @error('user_type')
        <span class="invalid-feedback" role="alert">
          <strong>{{ $message }}</strong>
        </span>
        @enderror
   </div>
</div>

RegisterController. php

<?php

namespace App\Http\Controllers\Auth;
use \Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Auth\Events\Registered;

class RegisterController extends Controller
{

    protected function validator(array $data)
    {
        $validator = Validator::make($data, [
            'register_name' => ['required', 'string', 'max:8'],
            'register_email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
            'register_password' => ['required', 'string', 'min:8', 'confirmed'],
            'user_type'=> ['required','in:user,company'],

        ]);
        $validator->setAttributeNames([
            'register_email' => 'email',
            'register_password' => 'password',
        ]);

        return $validator;
    }

    protected function create(array $data)
    {
      $user = User::create([
          'name' => $data['register_name'],
          'email' => $data['register_email'],
          'password' => Hash::make($data['register_password']),
          'user_type' =>$data['user_type'],

      ]);

      $user->sendEmailVerificationNotification();

      return $user;
    }
}

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

вы должны задать имя для радио и использовать в контроллере:

  <label class="radio-inline control-label">
  <input name="user" id="user_type" value="user" type="radio" class="form-control @error('user_type') is-invalid 
  @enderror" name="user_type" required autocomplete="user_type">User</label>

  <label class="radio-inline control-label">
  <input name="company" id="user_type" value="company" type="radio" class="form-control @error('user_type') is- 
  invalid @enderror" name="user_type" required autocomplete="user_type">Comapny</label>

    @error('user_type')
    <span class="invalid-feedback" role="alert">
      <strong>{{ $message }}</strong>
    </span>
    @enderror

и в контроллере:

класс RegisterController расширяет контроллер {

protected function validator(array $data)
{
    $validator = Validator::make($data, [
        'register_name' => ['required', 'string', 'max:8'],
        'register_email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
        'register_password' => ['required', 'string', 'min:8', 'confirmed'],
        'user_type' => ['required', 'in:user,company'],

    ]);
    $validator->setAttributeNames([
        'register_email' => 'email',
        'register_password' => 'password',
    ]);

    return $validator;
}

protected function create(array $data)
{
    if ($data['user']) {
        $user = User::create([
            'name' => $data['register_name'],
            'email' => $data['register_email'],
            'password' => Hash::make($data['register_password']),
            'user_type' => $data['user'],

        ]);
    }
    if ($data['company']) {
        $user = User::create([
            'name' => $data['register_name'],
            'email' => $data['register_email'],
            'password' => Hash::make($data['register_password']),
            'user_type' => $data['company'],

        ]);
    }

    $user->sendEmailVerificationNotification();

    return $user;
}
0 голосов
/ 14 апреля 2020

Проблема заключается в том, что вы забыли поместить свой user_type в массив с возможностью заполнения в пользовательской модели.

измените код, указанный ниже.

protected $fillable = [
    'name', 'email', 'password', 'user_type'
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...