V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mani
V2EX  ›  PHP

基于 ForoneAdmin 的 CMS 系统 Demo - 1

  •  
  •   mani · 2015-08-10 11:24:19 +08:00 · 2065 次点击
    这是一个创建于 3181 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Github地址 欢迎大家一起维护:)
    Demo源码
    有内容列表的文章更方便阅读 见这里

    另团队急需人才,有兴趣的朋友请联系 [email protected] 或 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
    
    Error: language "@extends('forone::layouts.master')" is not supported

    然后数据列表页就完成了

    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

    4 条回复    2015-08-13 08:24:02 +08:00
    starit
        1
    starit  
       2015-08-10 21:33:49 +08:00
    如果支持远程兼职工作,可以考虑考虑。。。
    现在已经有工作了。。
    mani
        2
    mani  
    OP
       2015-08-11 11:36:31 +08:00
    @starit 没问题,能麻烦发一份简历吗?注明兼职,因为我们都模块化后,其实都规范了,很多业务兼职做也都是没有问题的
    starit
        3
    starit  
       2015-08-12 14:34:48 +08:00
    @mani 已经发了简历
    laferm
        4
    laferm  
       2015-08-13 08:24:02 +08:00 via Android
    不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1493 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:57 · PVG 07:57 · LAX 16:57 · JFK 19:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.