基于 ForoneAdmin 的 CMS 系统 Demo - 1

2015-08-10 11:24:19 +08:00
 mani

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

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

基础工作

创建model及表文件

php artisan make:model Tag --migration

创建 RESTful Resource Controller

php artisan make:controller Tag/TagController

添加路由

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

配置菜单

打开 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

然后数据列表页就完成了

编写数据新增页

新增标签相关方法

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

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

创建CreateTagRequest验证请求

规则如下

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

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

点击"保存"

编写查看页面

查看标签相关方法

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

点击"查看"

编写编辑页面

编辑标签相关方法

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

点击“编辑”

点击“保存”

2098 次点击
所在节点    PHP
4 条回复
starit
2015-08-10 21:33:49 +08:00
如果支持远程兼职工作,可以考虑考虑。。。
现在已经有工作了。。
mani
2015-08-11 11:36:31 +08:00
@starit 没问题,能麻烦发一份简历吗?注明兼职,因为我们都模块化后,其实都规范了,很多业务兼职做也都是没有问题的
starit
2015-08-12 14:34:48 +08:00
@mani 已经发了简历
laferm
2015-08-13 08:24:02 +08:00
不错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/212051

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX