Laravel-admin 开发扩展示例

最近用到这个东东,版本如下

  • laravel-admin ^1.5

  • laravel 5.5.*

一、Form组件扩展示例

有时候,Form中的组件不能100%满足需求,需要扩展下,以$form->select()方法为例,可以在app\Admin\Extensions目录下创建Select.php,继承原先Select类,如下。

namespace App\Admin\Extensions;

use Encore\Admin\Admin;

class Select extends \Encore\Admin\Form\Field\Select

然后根据你的需求重写或新增功能,然后在app\Admin\bootstrap.php中加入下面代码

\Encore\Admin\Form::extend('select', \App\Admin\Extensions\Select::class);

它会覆盖原先的$form->select()方法,或者你任然需要原先的功能,可以换个方法名,如

\Encore\Admin\Form::extend('self_select', \App\Admin\Extensions\Select::class);

二、后台登陆增加验证码示例

安装验证码库(具体安装参看文档)

composer require mews/captcha

复制vendor/encore/laravel-admin/src/Controllers/AuthController.php到app/Admin/Controllers/AuthController.php,修改代码如下

<?php

namespace App\Admin\Controllers;

use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Validator;

class AuthController extends Controller
{
    /**
     * Login page.
     *
     * @return \Illuminate\Contracts\View\Factory|Redirect|\Illuminate\View\View
     */
    public function getLogin()
    {
        if (!Auth::guard('admin')->guest()) {
            return redirect(config('admin.route.prefix'));
        }

        return view('admin.login');
    }

    /**
     * @param Request $request
     *
     * @return mixed
     */
    public function postLogin(Request $request)
    {
        $credentials = $request->only(['username', 'password','captcha']);

        $validator = Validator::make($credentials, [
            'username' => 'required',
            'password' => 'required',
            'captcha' => 'required|captcha'
        ]);

        if ($validator->fails()) {
            return Redirect::back()->withInput()->withErrors($validator);
        }

        unset($credentials['captcha']);

        if (Auth::guard('admin')->attempt($credentials)) {
            admin_toastr(trans('admin.login_successful'));

            return redirect()->intended(config('admin.route.prefix'));
        }

        return Redirect::back()->withInput()->withErrors(['username' => $this->getFailedLoginMessage()]);
    }

    /**
     * @return string|\Symfony\Component\Translation\TranslatorInterface
     */
    protected function getFailedLoginMessage()
    {
        return Lang::has('auth.failed')
            ? trans('auth.failed')
            : 'These credentials do not match our records.';
    }
}

在resources/lang/zh-CN/validation.php中添加

'captcha'               => ':attribute 错误',
'attributes'           => [
        'captcha'               => '验证码',
        //...
]

复制vendor/encore/laravel-admin/resources/views/login.blade.php到resources/views/admin/login.blade.php。
新增内容如下:

<div class="form-group has-feedback {!! !$errors->has('captcha') ?: 'has-error' !!}">

        @if($errors->has('captcha'))
          @foreach($errors->get('captcha') as $message)
            <label class="control-label" for="inputError"><i class="fa fa-times-circle-o"></i>{{$message}}</label></br>
          @endforeach
        @endif

        <input type="text" class="form-control" style="display: inline;width: 60%" placeholder="{{ trans('admin.captcha') }}" name="captcha">
          <span class="glyphicon glyphicon-refresh form-control-feedback captcha" style="right:39%;z-index: 100"></span>
          <img style="display: inline;width: 37%;height: 36px;float: right" class="captcha" src="{{ captcha_src('admin') }}">
      </div>
      <script>
        $(function () {

          $('.captcha').click(function () {
              $('img[class="captcha"]').attr('src','{{ captcha_src('admin') }}'+Math.random());
          });
        });
      </script>

app/Admin/routes.php中新增

 $router->get('auth/login', 'AuthController@getLogin');
 $router->post('auth/login', 'AuthController@postLogin');

覆盖原先路由

本帖已被设为精华帖!
本帖由系统于 5年前 自动加精
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3
ThinkQ

laravel-admin可以自定义视图么?

5年前 评论

@eiomi 挖个坟,哥们 ,找到怎么自定义视图了么 ? 他文档里写了,我照着改了但是没有生效。

5年前 评论

推荐无感知的Google验证码

扩展:lyne007/auth-recaptcha

截图 file

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!