首页 > 解决方案 > 如何将新用户重定向到编辑个人资料页面

问题描述

我这里有问题。当新用户注册时,我想将他/她重定向到编辑个人资料页面...如何更改登录控制器以重定向到该页面?

这是我的注册控制器

<?php

namespace App\Http\Controllers\Auth;

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;

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 = '/profiles/'.$user->id.'/edit';

    /**
     * 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, [
            'type' => ['required'],
            'name' => ['required', 'string', 'max:255'],
            'last_name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'phone' => ['required', 'string', 'max:15', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

    

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'last_name' => $data['last_name'],
            'email' => $data['email'],
            'phone' => $data['phone'],
            'type' => $data['type'],
            'password' => Hash::make($data['password']),
        ]);
        
            if($data['type'] == 'Learner'){
                $user->attachRole('learner');
                return $user;
            }
            elseif($data['type'] == 'Guardian'){
                $user->attachRole('guardian');
                return $user;
            }
            elseif($data['type'] == 'Teacher'){
                $user->attachRole('teacher');
                return $user;
            }
    }
}

编辑刀片.php

@extends('layouts.admin')

@section('main-content')
    <!-- Page Heading -->
    <h1 class="h3 mb-4 text-gray-800">{{ $user->name }} {{$user->last_name}}</h1>
    <hr/>
    @if (session('message'))
    <div class="alert alert-success border-left-success alert-dismissible fade show" role="alert">
        {{ session('message') }}
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
    @endif
    

    <form method="POST" action="{{ route('profiles.update', $user->id) }}">
        @csrf
        @method('PATCH')
        <div class="row">
            <div class="col-md-9">
                <div class="card shadow mb-4 px-4 pb-4">
                    <div class="card-header py-3 px-0">
                        <h6 class="m-0 font-weight-bold text-primary">User Information</h6>
                    </div>
                    @if(Auth::user()->hasRole(['superadministrator', 'administrator']))
                    <div class="row my-2">
                            <div class="col-md-2 font-weight-bold pt-2">Role:</div>
                            <div class="col-md-10">
                                <div class="form-group">
                                    <select id="role" name="role" class="form-control @error('role') is-invalid @enderror" value="{{ old('role') }}">
                                        <option value="">Choose user role...</option>
                                            @foreach($roles as $role)
                                                <option value="{{ $role->display_name }}" {{ $user->hasRole($role->name) ? 'selected' : '' }}>{{ $role->display_name }}</option>
                                            @endforeach
                                    </select>
                                    @error('role')
                                        <span class="invalid-feedback" role="alert">
                                            <strong>{{ $message }}</strong>
                                        </span>
                                    @enderror
                                </div>
                            </div>
                        </div>

. . . . .

用户注册后必须到此页面而不是主目录...请帮助

标签: laravel

解决方案


一个解法 :

  • 创建迁移如何添加$table->boolean('profil_edited')->default(0);
  • $fillable更新您的模型以在数组上添加此字段
  • 检查这个值:
    • 当用户登录时,并将用户重定向到个人资料页面
    • 或在一个middleware

推荐阅读