使用Laravel构建内容管理框架(七)

Happy Coding

本文目标


新增角色管理模块,管理角色的增删查改。

新增请求


php artisan make:request Form/RoleForm

文件RoleForm代码如下:

 'required',
            'display_name' => 'required',
            'description'  => 'required'
        ];
    }

    public function messages()
    {
        return [
            'name.required'         => '角色标识不能为空',
            'display_name.required' => '角色名称不能为空',
            'description.required'  => '角色描述不能为空'
        ];
    }
}

新增控制器


php artisan make:controller Backend/RoleController

文件RoleController.php代码如下:

all())) {
                return redirect()->route('role.index')->withSuccess('新增角色成功');
            }
        } catch (\Exception $e) {
            return redirect()->back()->withErrors(array('error' => $e->getMessage()))->withInput();
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        return view('backend.role.show', compact('id'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $role = Role::find($id);

        return view('backend.role.edit', compact('role'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  int                      $id
     *
     * @return \Illuminate\Http\Response
     */
    public function update(RoleForm $request, $id)
    {
        $data = $request->all();
        unset($data['_token']);
        unset($data['_method']);
        try {
            if (Role::where('id', $id)->update($data)) {
                return redirect()->back()->withSuccess('编辑角色成功');
            }
        } catch (\Exception $e) {
            return redirect()->back()->withErrors(array('error' => $e->getMessage()))->withInput();
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        try {
            if (Role::destroy($id)) {
                return redirect()->back()->withSuccess('删除角色成功');
            }
        } catch (\Exception $e) {
            return redirect()->back()->withErrors(array('error' => $e->getMessage()));
        }
    }
}

新增视图


index.blade.php

@extends('backend.layout.main')

@section('content')
    
    

角色列表

@forelse($roles as $role) @empty @endforelse
角色编号 角色标识 角色名称 角色描述 管理操作
{{$role->id}} {{$role->name}} {{$role->display_name}} {{$role->description}} 编辑 赋权 删除
暂无数据
@if($roles->render() !== "") @endif
@include('backend.layout.model.default',['model_title'=>'操作提示','model_content'=>'你确定要删除这名角色吗?']) @stop @section('script') @stop

show.blade.php

@extends('backend.layout.main')

@section('content')

@stop
@section('script')

@stop

edit.blade.php

@extends('backend.layout.main')
@section('content')
    

{{$page_title or "Page Title"}}

@include('backend.layout.message.tips',['field'=>'name'])
@include('backend.layout.message.tips',['field'=>'display_name'])
@include('backend.layout.message.tips',['field'=>'description'])
@stop

create.blade.php

@extends('backend.layout.main')
@section('content')
    

{{$page_title or "Page Title"}}

@include('backend.layout.message.tips',['field'=>'name'])
@include('backend.layout.message.tips',['field'=>'display_name'])
@include('backend.layout.message.tips',['field'=>'description'])
@stop

填充数据


打开文件database/seeds/DatabaseSeeder.php,修改代码如下:

call(UserTableSeeder::class);
        $this->call(MenuTableSeeder::class);
        $this->call(RoleTableSeeder::class);
        Model::reguard();
    }

}

class UserTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('users')->delete();
        User::create(['name' => 'Ann', 'email' => '[email protected]', 'password' => bcrypt(123456)]);
        User::create(['name' => 'Luis', 'email' => '[email protected]', 'password' => bcrypt(123456)]);
        User::create(['name' => 'admin', 'email' => '[email protected]', 'password' => bcrypt(123456)]);
    }
}

class MenuTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('menus')->delete();
        Menu::create(["parent_id" => "0", "name" => "首页管理", "url" => "index.index", 'description' => '展示系统的各项基础数据']);
        Menu::create(["parent_id" => "0", "name" => "菜单管理", "url" => "menu.index", 'description' => '管理菜单的新增、编辑、删除']);
        Menu::create(["parent_id" => "2", "name" => "菜单列表", "url" => "menu.index", 'description' => '管理菜单的新增、编辑、删除']);
        Menu::create(["parent_id" => "2", "name" => "新增菜单", "url" => "menu.create", 'description' => '新增菜单的页面']);
        Menu::create(["parent_id" => "2", "name" => "编辑菜单", "url" => "menu.edit", 'description' => '编辑菜单的页面', 'is_hide' => 1]);
        Menu::create(["parent_id" => "0", "name" => "角色管理", "url" => "role.index", 'description' => '管理角色的新增、编辑、删除']);
        Menu::create(["parent_id" => "6", "name" => "角色列表", "url" => "role.index", 'description' => '管理角色的新增、编辑、删除']);
        Menu::create(["parent_id" => "6", "name" => "新增角色", "url" => "role.create", 'description' => '新增角色的页面']);
        Menu::create(["parent_id" => "6", "name" => "编辑角色", "url" => "role.edit", 'description' => '编辑角色的页面', 'is_hide' => 1]);
        Menu::create(["parent_id" => "6", "name" => "角色赋权", "url" => "role.show", 'description' => '编辑角色的页面', 'is_hide' => 1]);
        Menu::create(["parent_id" => "0", "name" => "权限管理", "url" => "permission.index", 'description' => '管理权限的新增、编辑、删除']);
        Menu::create(["parent_id" => "11", "name" => "权限列表", "url" => "permission.index", 'description' => '管理权限的新增、编辑、删除']);
        Menu::create(["parent_id" => "11", "name" => "新增权限", "url" => "permission.create", 'description' => '新增权限的页面']);
        Menu::create(["parent_id" => "11", "name" => "编辑权限", "url" => "permission.edit", 'description' => '编辑权限的页面', 'is_hide' => 1]);
        Menu::create(["parent_id" => "0", "name" => "用户管理", "url" => "user.index", 'description' => '管理用户的新增、编辑、删除']);
        Menu::create(["parent_id" => "15", "name" => "用户列表", "url" => "user.index", 'description' => '管理用户的新增、编辑、删除']);
        Menu::create(["parent_id" => "15", "name" => "新增用户", "url" => "user.create", 'description' => '新增用户的页面']);
        Menu::create(["parent_id" => "15", "name" => "编辑用户", "url" => "user.edit", 'description' => '编辑用户的页面', 'is_hide' => 1]);
    }
}

class RoleTableSeeder extends Seeder{
    public function run()
    {
        DB::table('roles')->delete();
        Role::create(['name' => 'admin', 'display_name' => 'User Administrator', 'description' => 'User is allowed to manage and edit other users']);
        Role::create(['name' => 'owner', 'display_name' => 'Project Owner', 'description' => 'User is the owner of a given project']);
    }
}

接着在终端执行以下命令回滚并再次执行迁移,填充数据

php artisan migrate:refresh --seed

效果预览


使用Laravel构建内容管理框架(七)_第1张图片
屏幕快照 2016-02-19 17.19.36.png

你可能感兴趣的:(使用Laravel构建内容管理框架(七))