当前位置: 首页 > 知识库问答 >
问题:

Laravel 6.5寄存器重定向不工作

常茂
2023-03-14

我使用的是Laravel6.5,这对PHP和Laravel来说还是新的。当我成功注册时,它会将我返回到相同的注册表单,其输入为空。它成功注册了用户tho,但不会重定向。我也尝试过重写redirectPath()函数,但该函数不起作用。

当我尝试重写其他方法(如ShowRegistrationForm())时,它工作得很好,但我无法让它重定向。

重定向对登录控制器非常有效。

这是我的ontroller.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
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
     */
    public $redirectTo = '/home';

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

    }

    /** Overrriding native method */
    public function showRegistrationForm(){

        $this->authorize('register', User::class);
        return view('auth.register');

    }


    /**
     * 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', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', '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::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password'])
        ]);
        return redirect()->to($this->redirectTo);
    }
}

和网络。php与我的路线

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
})->name('welcome');

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

/** Since we can't register without login in. I'll try to do the 'registering' by myself. */
Route::post('/users', 'HomeController@store');

/** In here we will try and do all 7 resource methods in one line of code */
Route::resource('trabajos', 'TrabajoController');

/** Ruta para que el admin vea todos los trabajos de los usuarios */
Route::get('/usuarios', 'AdminController@index');
/** Ruta para eliminar alguno */
Route::delete('usuarios/{usuario}', 'AdminController@delete')->name('admin.delete');

Route::get('/usuarios/{usuario}', 'AdminController@show');

/** Tratando de setear el Price de un trabajo específico */
Route::post('/setPrice/{trabajoId}', 'AdminController@setPrice');

/** Updateando información de trabajos de otros usuarios */
Route::get('/usuarios/{usuario}/trabajo/{trabajo}/edit', 'AdminController@editJob');
/** Patching it */
Route::patch('/usuarios/{usuario}/trabajo/{trabajo}', 'AdminController@updateJob');

/** Filtering */
Route::get('/usuarios/{usuario}/filtro', 'AdminController@filter');

/** Getting a pdf */
Route::get('/usuarios/{usuario}/pdf','AdminController@export_pdf');

还有我的家庭控制器


namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;

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

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        return view('home');
    }

    /** From here and down, it's mine  */
    public function store(){

        $data=request()->validate([
            'name' => 'required',
            'email' => 'required|email',
            'password' => 'required|min:5|confirmed',
        ]);
        /* User::create($data); */
        $user = new User;
        $user->name = request()->name;
        $user->email = request()->email;
        $user->password = bcrypt(request()->password);

        $user->save();

        return back();

    }
}

共有3个答案

章茂
2023-03-14

您必须在注册操作时重定向,而不是创建操作

这是我的ontroller.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
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
     */
    public $redirectTo = '/home';

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

    }

    /** Overrriding native method */
    public function showRegistrationForm(){
        return view('auth.register');
    }


    /**
     * 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', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', '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)
    {
       return  User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password'])
        ]);

    }

   public function register(Request $request)
   {
      $this->validator($request->all())->validate();

      event(new Registered($user = $this->create($request->all())));

      $this->guard()->login($user);

      return $this->registered($request, $user)
        ?: redirect()->intended($this->redirectPath());
   }

}
翁烨霖
2023-03-14

成功注册后–您被重定向到哪里?默认/主URL,或RegisterController中$redirectTo属性中指定的任何内容。那么,如何定制它并使Laravel“记住”注册的前一页呢?因此,您应该重写RegisterController中的register方法,为此,您可以复制位于以下位置的register方法:vendor/laravel/framework/src/illighte/Foundation/Auth/RegisterUsers。php并在RegisterController中进行如下更改。

/**
 * Handle a registration request for the application.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function register(Request $request)
{
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));

    $this->guard()->login($user);

    return $this->registered($request, $user)
        ?: redirect()->intended($this->redirectPath());
}
颜奇希
2023-03-14

在操作存储更改back()重定向()-

 类似资料:
  • 我有两台服务器: 1)PHP版本7.0.28-1~dotdeb 8.1 System Linux online 3.16。0-4-amd64#1 SMP Debian 3.16。51-2(2017-12-03)x86_64服务器API FPM/FastCGI虚拟目录支持禁用配置文件(php.ini)路径/etc/php/7.0/FPM 2)PHP版本5.6.34-1~dotdeb 7.1 Syst

  • 我正在尝试为短代码创建一个插件。但我的激活钩不起作用。插件在我的页面中被激活,但在我的代码中没有任何东西可以工作,比如:我的 请帮帮我。我卡住了

  • 我尝试从登录页面获取密码,然后尝试从mysql收集存储的密码。然后我将其与提交的密码进行比较。现在我想,如果两个密码匹配,然后重定向到一个页面。但问题是每次页面重定向时。如果密码与页面重定向不匹配。 我已经删除了这个功能,并试图以简单的方式做它。但仍然不起作用。编辑代码:

  • 我正在尝试将所有http流量的重定向配置为仅重定向到https。我的配置如下 我们使用的是弹性负载均衡和 EC2 实例 在这种情况下,已配置应用程序负载均衡器。 后端服务器正在使用 Nginx 在端口 443 上工作 为 http 到 https 重定向配置了 Nginx 重定向规则 为端口 80 和 443 配置了 ELB 侦听器 在支持的服务器和 ELB 中都安装了 SSL 证书 我的问题是,

  • Vim 可以将不同字段剪切或复制到不同寄存器中,您可以从不同寄存器中取出内容后粘贴 "寄存器名称 按下"键和另一个字符键,便可以定义一个寄存器。例如:"a "1 定义寄存器后直接进行操作 "ayy 将当前行复制到寄存器 a 中 "ap 将寄存器 a 中的内容粘贴到光标之后 :registers 查看所有寄存器的内容 通常情况下,寄存器 + (先按",再按 Shift+= )对应

  • Vim提供了许多寄存器。可以将这些寄存器用作多个剪贴板。使用多个文件时,此功能非常有用。在本章中,将讨论以下主题内容 - 复制寄存器中的文本 粘贴寄存器中的文本 列出可用的寄存器 寄存器类型 1. 复制寄存器中的文本 对于复制,可以使用普通的命令,即并将其存储在寄存器中,可以使用以下语法 - 例如,要复制寄存器中的文本,请使用以下命令 - 2. 粘贴寄存器中的文本 从寄存器粘贴文本 - 例如,下面