如何让普通用户也用上 Laravel-admin 。。

1 继承 Encore\Admin\Layout\Content

<?php
namespace App\Http\Wrapper;
use Admin;
use App\Admin\Extensions\Form\CityPicker;
use Encore\Admin\Form;
use Encore\Admin\Layout\Content;

class UserContent extends Content
{
    protected $view = 'wrapper.content';

    public function __construct(\Closure $callback = null)
    {
        Form::registerBuiltinFields();
        Form::extend('city_picker', CityPicker::class);
        $assets = Form::collectFieldAssets();
        Admin::css($assets['css']);
        Admin::js($assets['js']);
        parent::__construct($callback);
    }

    public function render()
    {
        $items = [
            'title' => $this->header . ' ' . $this->description,
            'header' => $this->header,
            'description' => $this->description,
            'breadcrumb' => $this->breadcrumb,
            'content' => $this->build(),
        ];

        return view($this->view, $items);
    }

}

2 定义 pjax

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\MessageBag;
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\HttpFoundation\Response;

class MyPjax
{
    protected $auth_name = 'web';

    public function handle($request, Closure $next)
    {
        $response = $next($request);

        if (!$request->pjax() || $response->isRedirection() || Auth::guard()->guest()) {
            return $response;
        }

        if (!$response->isSuccessful()) {
            return $this->handleErrorResponse($response);
        }

        try {
            $this->filterResponse($response, $request->header('X-PJAX-CONTAINER'))
                ->setUriHeader($response, $request);
        } catch (\Exception $exception) {
        }

        return $response;
    }
    /// 其它内容和 Encore\Admin\Middleware\Pjax 一致
}

3 复制模版
模板跟laravel-admin 的模板一样,除了 sidebar.blade.php 的菜单,这种将菜单写死

  • admin.blade.php 跟 vendor/encore/laravel-admin/resources/views/index.blade.php 基本一样
        @include('admin::partials.header')
    @include('admin::partials.sidebar')
    <div class="content-wrapper" id="pjax-container">
        @yield('content')
        {!! Admin::script() !!}
    </div>
    @include('admin::partials.footer')

    将模板路径替换成自己的

  • header.blade.php 将用户名称,头像用用 auth()->user->nameStorage::url(auth()->user()->avatar 代替
  • sidebar.blade.php 将菜单部分用固定的菜

            <ul class="sidebar-menu">
            <li class="header">菜单</li>
            <li>                <a href="/my/">
                    <i class="fa fa-dashboard"></i>
                    <span>首页</span>
                </a>
            </li>

    4 建立控制器
     我们可以使用 php artisna admin:make PostController --model=App\Post 然后将生成的文件移到 App\Http\Controller 下,修改namespace
    再将顶部的 use Encore\Admin\Layout\Content; 改为 use App\Http\Wrapper\UserContent as Content; 第一改写的content 类, 再在这个控制器中加入 middle pjax(第二步定义的pjax,已在app/Http/Kernel.php中配置

         public function __construct()
    {
        $this->middleware('pax');
    }

    未完等待检验

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 2

模板放在那个位置?

6年前 评论

如何在lavarel-admin中用七牛上传视频文件?

6年前 评论

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