默认是email登录,不符合用户习惯,修改登录账号字段,需要修改nova登录模板和控制器
1.模板在resources/views/vendor/nova/
新建auth
目录,
vendor/laravel/nova/resources/views/auth/login.blade.php
复制到resources/views/vendor/nova/auth/
修改模板resources/views/vendor/nova/auth/login.blade.php
修改email输入表单和错误信息字段,如下
@if ($errors->any())
<p class="text-center font-semibold text-danger my-3">
@if ($errors->has('name'))
{{ $errors->first('name') }}
@else
{{ $errors->first('password') }}
@endif
</p>
@endif
<div class="mb-6 {{ $errors->has('name') ? ' has-error' : '' }}">
<label class="block font-bold mb-2" for="name">账号</label>
<input class="form-control form-input form-input-bordered w-full" id="name" type="text" name="name" value="{{ old('name') }}" required autofocus>
</div>
<div class="mb-6 {{ $errors->has('password') ? ' has-error' : '' }}">
<label class="block font-bold mb-2" for="password">{{ __('Password') }}</label>
<input class="form-control form-input form-input-bordered w-full" id="password" type="password" name="password" required>
</div>
名称可以用{{ __('UserName') }}
需要在resources/lang/vendor/nova
下json
添加对应
"UserName": "账号",
2.修改vendor/laravel/nova/src/Http/Controllers
文件夹下LoginController.php
修改app\Provider\NovaServiceProvider.php
里
添加use Illuminate\Support\Facades\Route;
修改routes()方法,添加withAuthenticationRoutes覆盖原方法
use Illuminate\Support\Facades\Route;
protected function routes()
{
$this->withAuthenticationRoutes();
Nova::routes()
// ->withAuthenticationRoutes()
->withPasswordResetRoutes()
->register();
}
/** 覆盖withAuthenticationRoutes() */
public function withAuthenticationRoutes($middleware = ['web'])
{
Route::namespace('App\Nova\Http\Controllers\Auth')
->domain(config('nova.domain', null))
->middleware($middleware)
->as('nova.')
->prefix(Nova::path())
->group(function () {
Route::get('/login', 'LoginController@showLoginForm');
Route::post('/login', 'LoginController@login')->name('login');
});
return $this;
}
复制nova\src\Http\Controllers\LoginController.php
到app\Nova\Http\Controllers\Auth\LoginController.php
app\Nova\Http\Controllers\Auth\LoginController.php
添加username()重构
public function username()
{
return 'name';
}