QQ扫一扫联系
如何覆盖ModStartBlog默认的视图,我想自定义后台登录页面?
ModStartBlog 稳定版 v10.0.0 PHP:7.0.9 版本
如何覆盖ModStartBlog默认的视图,我想自定义后台登录页面?我现在就拿后台登录页面举例子来说。
这是后台默认的登录页面,我们都知道的。
vendor/modstart/modstart/src/Admin/Controller/AuthController.php这个控制器的login方法就是后台登录页面的路由action。
可以看到这个login这个操作结尾return了modstart::admin.login这个视图对象。
modstart::admin.login对应的模板文件(一个blade文件)就是vendor/modstart/modstart/views/admin/login.blade.php这个文件。
是这个模板文件没错。尾部有提交按钮,最下方就是是否显示备案信息,后台可以设置的。
也就是调用 view('modstart::admin.login')时候是在 vendor/modstart/modstart/src/Admin/Controller/AuthController.php 这个modstart的源码里面的,我们没法直接改,不然不合规。
而直接修改后台登录页面的模板文件,即vendor/modstart/modstart/views/admin/login.blade.php这个文件,显示也是一样不合规的,咱别不懂事,乱搞哈。
还好,睡了一觉,想了一晚后,laravel托梦告诉我,调用view()方法创建视图对象时候,laravel会给个钩子我们。
就是这个,会触发一个叫 creating: 前缀开头加视图名结合的事件。
那也就是说,创建后台登录页面视图对象的时候会触发 creating: modstart::admin.login 这个事件。后面才是login操作return这个视图对象,然后再继续后面才有laravel框架根据return的这个视图对象计算渲染结果。那不就正对我们胃口了,我们刚好可以利用这个钩子搞点那些,嘻嘻。
我们可以写在 app/Providers/AppServiceProvider.php 这个文件的boot方法里。因为这些服务提供类都发生于路由前的。
可以看到为了严谨点我们还用了 $view->getFactory()->getFinder()->find() 这个方法验证转化出完整的路径。
这样既能验证出 admin.login 对应的模板文件存在(不存在时会抛出异常的),又不需要我们计算对应的完整路径名了。
那admin.login对应的模板文件是哪个?别太疑惑!!!laravel文档有说的 。
好吧,我说了。默认规则就是在resources/views这个文件夹里根据你写的拼接的,所以admin.login这个就是resources/views/admin/login.blade.php。
接下来就不多说了,就是复制modstart后台登录页面那个blade文件里的代码到你这边来好了,想怎么横怎么横。
我把这里登录按钮改文字了,还有注释掉不要显示备案功能了。
看下成功自定义后台登录页面后的效果:
赞 👍