laravel-nova

3.Laravel-Nova修改登录login不是使用email

2019-01-18  本文已影响0人  Moquyun

默认是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/novajson添加对应

"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.phpapp\Nova\Http\Controllers\Auth\LoginController.php

app\Nova\Http\Controllers\Auth\LoginController.php
添加username()重构

public function username()
{
    return 'name';
}
上一篇下一篇

猜你喜欢

热点阅读