laravel-admin 使用

1,安裝

composer require encore/laravel-admin:1.*

php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"

php artisan admin:install

 

2,啓動服務後,在瀏覽器打開 http://localhost/admin/ ,使用用戶名 admin 和密碼 admin登錄.

 

3,如何登錄成功,修改路由進行配置。

在路由配置文件app/Admin/routes.php裏添加一行:$router->resource('/water', WaterController::class);

use Illuminate\Routing\Router;

Admin::routes();

Route::group([
    'prefix'        => config('admin.route.prefix'),
    'namespace'     => config('admin.route.namespace'),
    'middleware'    => config('admin.route.middleware'),
    'as'            => config('admin.route.prefix') . '.',
], function (Router $router) {

    $router->get('/', 'HomeController@index')->name('home');
    $router->resource('/water', WaterController::class);

});:

 

4,創建model文件。在文件夾app\Models下面創建模型文件Water.php。創建時應該在數據庫中創建相應的數據表

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Water extends Model
{
    protected $table = 'water';
    public $timestamps = false;//會禁止默認的create_at 和 `updated_at 字段使用
}

 

5,創建控制器。在文件夾app\Admin\Controllers  創建文件WaterController.php

<?php

namespace App\Admin\Controllers;

use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Show;
use Encore\Admin\Facades\Admin;

use App\Models\Water;

class WaterController extends AdminController
{
    /**
     * Title for current resource.
     *
     * @var string
     */
    protected $title = '水情信息';
 
    /**
     * Make a grid builder.
     *列表頁
     * @return Grid
     */
   protected function grid()
{
    
    
    $grid = new Grid(new Water);
    
    // 搜索
        $grid->filter(function($filter){
            $filter->column(1/2, function ($filter) {
            $filter->like('title');
            $filter->between('rate');
        });

    $filter->column(1/2, function ($filter) {
        $filter->equal('created_at')->datetime();
        $filter->between('updated_at')->datetime();
        $filter->equal('released')->radio([
            1 => 'YES',
            0 => 'NO',
        ]);
    });
            /*
            $filter->disableIdFilter();//去掉默認的id過濾器
            $filter->like('name1', '名稱1');
            $filter->between('datetime', '發佈日期')->date();
            
            $filter->in('time1', '時間')->select([
                                                1 => '華爲',
                                                2 => '小米',
                                                3 => 'OPPO',
                                                4 => 'vivo',
                                            ]);
        $filter->in('upfile', '狀態')->checkbox([
        0 => '未知',
        1 => '已下單',
        2 => '已付款',
        3 => '已取消',
    ]);

    $filter->group('name2', function ($group) {
        $group->gt('大於');
        $group->lt('小於');
        $group->nlt('不小於');
        $group->ngt('不大於');
        $group->equal('等於');
    });


    $filter->equal('datetime')->datetime();
    $filter->equal('time2')->radio([
            1 => 'YES',
            0 => 'NO',
        ]);
    */

        });



    //$grid->model()->where('id', '>', 2900);
    $grid->model()->orderBy('id', 'desc');
    $grid->id('id')->sortable();
    //$grid->title('標題');
    $grid->name1('名稱1');
    $grid->name2('名稱12');
    $grid->time1('時間');
    $grid->uppic('圖片')->image();;
    $grid->datetime('修改時間');
    $grid->paginate(30);
    
    return $grid;
}

    /**
     * Make a show builder.
     *
     * @param mixed   $id
     * @return Show
     */
    protected function detail($id)
    {
        $show = new Show(Water::findOrFail($id));
        $show->panel()
            ->style('danger')
            ->title('基本信息');
        $show->field('id', __('ID'));
        $show->field('name1', '名稱1');
        $show->field('name2', '名稱2');
        $show->field('uppic', '圖片')->image() ; 
        $show->time1()->label();
        $show->divider();
        $show->field('datetime', '修改時間');
        return $show;
    }

    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        //admin_toastr('Message...', 'success');
        //admin_toastr('Message...', 'success', ['timeOut' => 5000]);

        $form = new Form(new Water);
        $form->display('id', __('ID'));
        //$form->text('titel', '標題');
        $form->text('name1', '名稱1')->placeholder('請輸入名稱');
        $form->text('name2', '名稱2');
        $form->text('time1', '時間');
        $form->datetime('dateTime', '發佈時間');
        $form->number('name3', '打分');
        $form->image('uppic','圖片上傳')->thumbnail('small', $width = 300, $height = 300);;
        $form->file('upfile','文件上傳');
        // 添加開關操作
        //$form->switch('released', '發佈');
        //$form->html(view('admin.public') );
        return $form;
    }
}

 

6,集成ckeditor編輯器

composer require laravel-admin-ext/ckeditor

php artisan vendor:publish --tag=laravel-admin-ckeditor

修改config/admin.php

'extensions' => [

        'ckeditor' => [
        
            //Set to false if you want to disable this extension
            'enable' => true,
            
            // Editor configuration
            'config' => [
                
            ]
        ]
    ]

修改 config.js  添加如下代碼

config.filebrowserImageUploadUrl='/admin/upload';
config.filebrowserUploadMethod ='form'

修改ckeditor/plugins/image/dialogs/image.js中搜索Upload 把id:"Upload",hidden:!0,  更改id:"Upload",hidden:false,

修改routes/web.php增加

Route::post('/admin/upload','CkeditorUploadController@uploadImage');

創建文件上傳控制器

php artisan make:controller ckeditorUploadcontroller

文件內容是

namespace App\Admin\Controllers;

use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Show;
use Encore\Admin\Facades\Admin;
use Illuminate\Support\Facades\Storage;
use Encore\Admin\Layout\Content;
use Illuminate\Http\Request;

class ckeditorUploadcontroller extends AdminController
{
    public function uploadImage(Request $request){
        $image=request()->file('upload');
        $path=$image->store('images');
        $url=Storage::disk('admin')->url($path);
        $callback=$request->input("CKEditorFuncNum");
        $CKEditor=$request->input("CKEditor");
        return "<script>window.parent.CKEDITOR.tools.callFunction(1,'{$url}','')</script>";
        
    }
}

編輯器調用的頁面直接使用如下方式調用編輯器

$form = new Form(new Water);
$form->ckeditor('content');

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章