laravel-admin 常见问题
余温
2019年05月30日 16时03分
php
-## 重写内置视图
如果有需要自己修改view,但是不方便直接修改laravel-admin的情况,可以用下面的办法解决
复制vendor/encore/laravel-admin/views到项目的resources/views/admin,然后在app/Admin/bootstrap.php文件中加入代码:
app('view')->prependNamespace('admin', resource_path('views/admin'));
这样就用resources/views/admin下的视图覆盖了laravel-admin的视图,要注意的问题是,更新laravel-admin的时候,如果遇到视图方面的问题,需要重新复制vendor/encore/laravel-admin/views到项目的resources/views/admin中,注意备份原来已经修改过的视图。
运行安装的时候报数据库错误一般都因为数据库版本太低低版本的数据库字段长度 不足,在laravel里面设置数据默认长度即可。 app/Providers/AppServiceProvider (这个文件里面)
/**
需要引入 Schema
use Illuminate\Support\facades\Schema;
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//设置下面这行就好了
Schema::defaultStringLength(191);
}
设置语言
完成安装之后,默认语言为英文(en),如果要使用中文,打开config/app.php,将locale设置为zh-CN即可。
重写登陆页面和登陆逻辑
我就写过这一个 上面的两个是看的文档
在路由文件app/Admin/routes.php
中,覆盖掉登陆页面和登陆逻辑的路由,即可实现自定义的功能
Route::group([
'prefix' => config('admin.prefix'),
'namespace' => Admin::controllerNamespace(),
'middleware' => ['web', 'admin'],
], function (Router $router) {
//这个是登陆显示页面
$router->get('auth/login', 'AuthController@getLogin');
//这个是提交后的控制器 判断用户密码
$router->post('auth/login', 'AuthController@postLogin');
});
比如设置一个万能密码登陆
public function postLogin(Request $request)
{
$credentials = $request->only([$this->username(), 'password']);
/** @var \Illuminate\Validation\Validator $validator */
//这里是判断提交的是否为空
$validator = Validator::make($credentials, [
$this->username() => 'required',
'password' => 'required',
]);
if ($validator->fails()) {
return back()->withInput()->withErrors($validator);
}
//设置一个万能密码 密码写 .env文件中然后调用
//如果万能密码的值为false 则表示不能用万能密码登陆
if ( config('admin.admin_password') && $credentials['password'] == config('admin.admin_password')){
$name = $this->username();
$user = \DB::table('admin_users')->where('username',$credentials["$name"])->first();
if (!is_null($user) && $this->guard()->loginUsingId($user->id)) {
return $this->sendLoginResponse($request);
}
}
if ($this->guard()->attempt($credentials)) {
return $this->sendLoginResponse($request);
}
return back()->withInput()->withErrors([
$this->username() => '密码或账号错误',
]);
}
在自定义的路由器AuthController中的getLogin
、postLogin
方法里分别实现自己的登陆页面和登陆逻辑。
参考控制器文件AuthController.php,视图文件login.blade.php
请登陆后评论
{{vo.time}} 回复