在我现有的laravel项目中,我使用用户名处理登录。
我已经用app \ Nova \ User.php上的用户名替换了电子邮件
请帮助我如何在laravel nova中使用用户名登录。提前致谢。
将此添加到您的
novaFolder\src\Http\Controllers
--
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
return 'username';
}
这应该这样做,不要忘记在表中添加用户名列字段
在研究了这个问题后,我解决了自己的问题。这就是我走的路。
应用程序\供应商\ NovaServiceProvider.php
use Illuminate\Support\Facades\Route; //..... protected function routes() { $this->myLoginRoutes(); Nova::routes() // ->withAuthenticationRoutes() ->withPasswordResetRoutes() ->register(); } /** ADD YOUR OWN LOGIN ROUTE */ public function myLoginRoutes($middleware = ['web']) { Route::namespace('App\Nova\Http\Controllers\Auth') ->middleware($middleware) ->as('nova.') ->prefix(Nova::path()) ->group(function () { Route::get('/login', 'LoginController@showLoginForm'); Route::post('/login', 'LoginController@login')->name('login'); }); }
复制
nova\src\resources\views\*
至
app\resources\views\vendor\nova\*
你可以随意修改你想要的东西。
复制
nova\src\Http\Controllers\LoginController.php
至
app\Nova\Http\Controllers\Auth\LoginController.php
并将命名空间修改为App \ Nova \ Http \ Controllers \ Auth;
应用程序\新星\ HTTP \ \控制器验证\ LoginController.php
// ADD THIS METHOD TO OVERRIDE public function username() { return 'username'; }
假设您已在用户迁移中将email
更改为username
对我来说,它有助于在NovaServiceProvider的启动功能中使用loadViewsFrom方法
$this->loadViewsFrom(__DIR__.'/../resources/views/vendor/nova', 'nova');
只需复制app / resources / views / vendor / nova / ...所需的模板
另见:https://laravel.com/docs/5.6/packages#views
除了用户模型的变化之外,这种变化应该可以完成大部分工作
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
return 'username';
}
问候,
安德烈亚斯