如何让普通用户也用上 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->name
和Storage::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 协议》,转载必须注明作者和本文链接
推荐文章: