基于 ForoneAdmin 的 CMS 系统 Demo - 1

Github地址 欢迎大家一起维护:)

Demo源码

有内容列表的文章更方便阅读 见这里

另团队急需人才,有兴趣的朋友请联系 mani@forone.co 或 QQ 1283233833 ,待遇高过同等大公司,阿姨做饭,春节假期前后各一周可在家远程办公,公司地点在团结湖盈科中心。

以简单的标签管理为例

基础工作

创建model及表文件

php artisan make:model Tag --migration

2D0353F8-391C-4165-BE66-2B17917B1703.png

EBA1AC66-5A80-43B6-B05D-6985F857EF1E.png

创建 RESTful Resource Controller

php artisan make:controller Tag/TagController

FACB937B-579F-47E9-8FF7-843C7D9A1118.png

添加路由

Route::group(['prefix'=>'admin'],function(){
    Route::resource('tags','Tag\TagController');
});

CD59FF13-7CC1-4F84-9F6A-8FD427E8422E.png

配置菜单

打开 config/forone.php 并添加标签管理配置

menus'        => [
        '标签管理'  => [
            'active_uri'      => 'roles',
            'icon'            => null,
            'permission_name' => 'admin.roles.index',
            'route_name'      => 'admin.tags.index',
            'is_redirect'     => true,
        ],
 'nav_titles'   => [
        'admin.tags.index'          => '标签管理',
        'admin.tags.create'        => '新建标签',
        'admin.tags.edit'             => '编辑标签',
        'admin.tags.show'          => '查看标签',
    ],

编写数据列表页

编辑Controller

通过URINAME进行view渲染、页面跳转等配置,需要Controller扩展自Forone的BaseController

use Forone\Admin\Controllers\BaseController

class TagController extends BaseController
{
    const URI = 'tags';
    const NAME = '标签';

    function __construct()
    {
        parent::__construct();
        view()->share('page_name', self::NAME);
        view()->share('uri', self::URI);
    }

通过 columns 的配置进行数据列表的配置,通过items进行分页数据填充

   public function index()
    {
        $results = [
            'columns' => [
                ['编号', 'id'],
                ['标签名', 'name'],
                ['创建时间', 'created_at'],
                ['更新时间', 'updated_at'],
                ['操作', 'buttons', function ($data) {
                    $buttons = [
                        ['查看'],
                        ['编辑'],
                    ];
                    return $buttons;
                }]
            ]
        ];
        $paginate = Tag::paginate();
        $results['items'] = $paginate;
        return $this->view(self::URI.'.index',compact('results'));
    }

创建列表模板

resources/views/tags/ 目录下创建 index.blade.php 文件,作为数据列表页模板


@section('main')

    {!! Html::list_header([
    'new'=>true,
    ]) !!}

    {!! Html::datagrid($results) !!}

@stop

然后数据列表页就完成了

5842EACF-76B9-4C78-948C-3735B09026A1.png

编写数据新增页

新增标签相关方法

public function create()
    {
        return $this->view(self::URI.'.create');
    }
public function store(CreateTagRequest $request)
    {
        $data=$request->only('name');
        Tag::create($data);
        return redirect()->route('admin.'.self::URI.'.index');
    }

使用 Tag::create方法存储数据需要编辑modelTag.php

protected $guarded = array();

创建新建模板

resources/views/tags/ 目录下创建 create.blade.php 文件,作为数据编辑页模板,并创建 form.blade.php 作为创建、编辑、查看的通用form表单模板

其中form模板为

{!! Form::group_text('name','标签名','请输入标签名') !!}

create模板为

@extends('forone::layouts.master')

@section('title', '新建'.$page_name)

@section('main')

    {!! Form::panel_start('新建'.$page_name) !!}
    @if (Input::old())
        {!! Form::model(Input::old(),['url'=>'admin/'.$uri,'class'=>'form-horizontal']) !!}
    @else
        {!! Form::open(['url'=>'admin/'.$uri,'class'=>'form-horizontal']) !!}
    @endif
    @include($uri.'.form')
    {!! Form::panel_end('保存') !!}
    {!! Form::close() !!}

@stop

点击 "新建" 按钮后看到新建页面

火狐截图_2015-08-07T03-44-36.605Z.png

创建CreateTagRequest验证请求

79FED15B-04E1-4471-B26C-710E6AFBFBBB.png

规则如下

   public function rules()
    {
        return [
            'name'          => 'required|max:50|unique:tags',
        ];
    }

    public function messages()
    {
        return [
            'name.required' => '标签名称不能为空',
            'name.unique' => '标签名称不能重复',
            'name.max' => '标签名称长度小于50',
        ];
    }

点击"保存"

火狐截图_2015-08-07T06-16-33.123Z.png

编写查看页面

查看标签相关方法

  public function show($id)
    {
        $data = Tag::findOrFail($id);
        if ($data) {
            return view(self::URI."/show", compact('data'));
        }else{
            return $this->redirectWithError('数据未找到');
        }
    }

创建show.blade.php模板

@extends('forone::layouts.master')

@section('title', '查看'.$page_name)

@section('main')

    {!! Form::model($data,['url'=>Request::url().'/edit','class'=>'form-horizontal', 'method'=>'GET']) !!}
    @include('tags.form', ['show'=>true])
    {!! Form::close() !!}

@stop

点击"查看"

火狐截图_2015-08-07T06-24-40.113Z.png

编写编辑页面

编辑标签相关方法

    public function edit($id)
    {
        $data = Tag::find($id);
        if ($data) {
            return view(self::URI."/edit", compact('data'));
        } else {
            return $this->redirectWithError('数据未找到');
        }
    }
    public function update(UpdateTagRequest $request, $id)
    {
        $data = $request->only(['name']);
        Tag::findOrFail($id)->update($data);
        return redirect()->route('admin.tags.index');
    }

编辑模板

@extends('forone::layouts.master')

@section('title', '更新'.$page_name)

@section('main')

    {!! Form::panel_start('编辑'.$page_name) !!}
    {!! Form::model($data,['method'=>'PUT','route'=>['admin.'.$uri.'.update',$data->id],'class'=>'form-horizontal']) !!}
        @include($uri.'.form')
    {!! Form::panel_end('保存') !!}
    {!! Form::close() !!}

@stop

点击“编辑”
火狐截图_2015-08-07T06-25-03.142Z.png

点击“保存”
火狐截图_2015-08-07T06-25-43.171Z.png

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1
(= ̄ω ̄=)··· 暂无内容!

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