如何更改默认的Laravel身份验证登录视图

18

我想要改变Laravel Auth的默认登陆视图。之前的建议是修改位于/vendor目录下相应控制器内部的路径,然而这是一个合作项目,因此不能修改供应商文件。

Laravel Auth的默认视图为auth.login,但我希望它是backend.pages.login

还有其他方法可以实现吗?

我也尝试手动在路由器中添加视图路由,但无论如何安排,它都不会将Auth识别为一个类。

注:这是Laravel 5.3版本。

提前感谢。

4个回答

53

App\Http\Controllers\Auth\LoginController中定义一个名为showLoginForm()的函数,如下所示:

public function showLoginForm()
{
    return view('custom.login');
}

它覆盖了trait Illuminate\Foundation\Auth\AuthenticatesUsers 中定义的函数showLoginForm

注意:在Laravel 5.3中,函数名称从getLogin更改为showLoginForm


另一个相关的问题:我如何在注册页面上实现这个功能? 没关系:我通过RegistersUsers文件解决了它 :) - StevenThelin

1

既然问题已经得到解答,我将为当前版本的Laravel提供相同的示例。

如果您使用的是Laravel 5.6及以上版本,则应将此功能放置在

app/Http/Controllers/Auth/LoginController.php

public function showLoginForm()
{
    return view('custom.login');
}

此外,如果您想向其中添加参数,可以在Web路由中指定参数,如下所示:
Route::get('login/{page?}', 'Auth\LoginController@showLoginForm')->name('login');

然后你可以像这样做:
public function showLoginForm($page = null)
{
    if(isset($page)){
        // do something
        // example: return view('auth.login', compact('page'));
    }
    return view('auth.login');
}

提示: 如果您的项目中没有LoginController,请确保运行。
php artisan make:auth

0
在您的 AuthenticatesUsers trait 中覆盖此方法:
public function showLoginForm()
{
    return view('login');
}

我已经看到了这个,但是“AuthController”在哪里? - StevenThelin
前往您的项目 vendor/laravel/framework/src/illuminate/Foundation/Auth/AuthenticatesUsers 文件 :) public function showLoginForm() { return view('auth.login'); } - Md. Abutaleb
1
你永远不应该编辑供应商文件,而应该在使用Trait的控制器上进行覆盖。 - Juan Cortés

0

特性 AuthenticatesUsers { 使用 RedirectsUsers, ThrottlesLogins;

/**
 * Show the application's login form.
 *
 * @return \Illuminate\View\View
 */
public function showLoginForm()
{
    return view('front.login');  //you can change every path you want
}

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接