ThinkPhp学习笔记——栏目功能完成及唯一性验证补充

*============创建栏目文件============↓

D:\phpStudy\WWW\niwo\application\admin\controller
复制 粘贴Admin文件,重命名Cate(栏目)

D:\phpStudy\WWW\niwo\application\admin\model
复制 粘贴Admin文件,重命名Cate(栏目)

D:\phpStudy\WWW\niwo\application\admin\validate
复制 粘贴Admin文件,重命名Cate(栏目)

D:\phpStudy\WWW\niwo\application\admin\view
复制 粘贴Admin文件,重命名cate(栏目)

*============创建栏目文件============↑

*============在视图和公共文件里,创建栏目管理列表============↓

D:\phpStudy\WWW\niwo\application\admin\view\common\left.html
复制内容:
<li>
            <a href="#" class="menu-dropdown">
                <i class="menu-icon fa fa-link"></i>
                <span class="menu-text">友情链接</span>
                <i class="menu-expand"></i>
            </a>
            <ul class="submenu">
                <li>
                    <a href="{:url('links/lst')}">
                                    <span class="menu-text">
                                        链接列表                                  </span>
                        <i class="menu-expand"></i>
                    </a>
                </li>
            </ul>
        </li>
内容添加修改为:
<li>
            <a href="#" class="menu-dropdown">
                <i class="menu-icon fa fa-user"></i>
                <span class="menu-text">管理员</span>
                <i class="menu-expand"></i>
            </a>
            <ul class="submenu">
                <li>
                    <a href="{:url('admin/lst')}">
                                    <span class="menu-text">
                                        管理列表                                    </span>
                        <i class="menu-expand"></i>
                    </a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#" class="menu-dropdown">
                <i class="menu-icon fa fa-list"></i>
                <span class="menu-text">栏目管理</span>
                <i class="menu-expand"></i>
            </a>
            <ul class="submenu">
                <li>
                    <a href="{:url('cate/lst')}">
                                    <span class="menu-text">
                                        栏目列表                                  </span>
                        <i class="menu-expand"></i>
                    </a>
                </li>
            </ul>
        </li>
http://www.yidt.cn/Home/FontAwesome
 Dashboard   Elements   Icons   FontAwesome
换图标
<i class="menu-icon fa fa-link"></i>
修改为:
<i class="menu-icon fa fa-list"></i>
	
*============在视图和公共文件下,创建栏目管理列表============↑

*============在控制器里,创建栏目和栏目模块内容============↓

D:\phpStudy\WWW\niwo\application\admin\controller\Cate.php
修改内容:
<?php
namespace app\admin\controller;
use think\Controller;
use app\admin\model\Cate as CateModel;
class Cate extends Controller
{
    public function lst()
    {
        $list = CateModel::paginate(3);// 分页输出列表 每页显示3条数据
        $this ->assign('list',$list); // 把$list,分配到模板list
        return $this->fetch(); //把数据返回给视图。
    }
    public function add()
    {
        if(request()->isPost()){
            $data=[
                'username'=>input('username'),
                'password'=>input('password'),
            ];
            $validate = \think\Loader::validate('cate'); //实例化validate 
            if(!$validate->scene('add')->check($data)){ //在add场景下,验证$data里面的数据,如果验证没有通过
                $this->error($validate->getError()); die;
            }
            if(db('cate')->insert($data)){
                return $this->success('栏目名称添加成功!','lst');
            }else{
                return $this->error('栏目名称添加失败!');
            }
            return;
        }
        return $this->fetch();
    }

    public function edit(){
        $id = input('id');
        $cates = db('cate')->find($id);
        if(request()->isPost()){
            $data = [
                'id' =>input('id'),
                'username' =>input('username'),
            ];
            if(input('password')){ // 如果修改管理员密码
                $data['password'] = md5(input('password')); // 在$data数组中修改,然后加密
            }else{
                $data['password'] = $cates['password']; // 否则密码留空,用原有密码
            }
            $validate = \think\Loader::validate('cate');
            if(!$validate->scene('edit')->check($data)){ // 在编辑场景验证
                $this->error($validate->getError()); die;
            }
            if(db('cate')->update($data)){ //
                $this->success('修改管理员成功!','lst');
            }else{
                $this->error('修改管理员失败!');
            }
            return;
        }
        $this->assign('cates',$cates);
        return $this->fetch();
    }

    public function del(){ // 删除的方法
        $id = input('id'); // 把input('id')赋值给$id
        if($id != 1) { // 如果$id不等于1
            if (db('cate')->delete(input('id'))) {
                $this->success('删除管理员成功!', 'lst');
            } else {
                $this->error('删除管理员失败!');
            }
        }else{
            $this->error('初始化管理员不能删除!');

        }
    }
    
}

D:\phpStudy\WWW\niwo\application\admin\model\Cate.php
修改内容:
<?php
namespace app\admin\model;
use think\Model; // 引入模型这个类
class Cate extends Model // 继承模块这个类
{
    

}

D:\phpStudy\WWW\niwo\application\admin\validate\Cate.php
修改内容:
<?php
namespace app\admin\validate;
use think\Validate; 
class cate extends Validate 
{

}

http://127.0.0.1/niwo/public/index.php/admin/cate/lst.html

*============在控制器下,创建栏目和栏目模块内容============↑

*============在视图里,修改栏目列表和栏目添加里的内容============↓

D:\phpStudy\WWW\niwo\application\admin\view\cate\lst.html
把“用户”,全部替换成“栏目”。
http://127.0.0.1/niwo/public/index.php/admin/cate/lst.html

D:\phpStudy\WWW\niwo\application\admin\view\cate\add.html
把“管理员”,全部替换成“栏目”。
http://127.0.0.1/niwo/public/index.php/admin/admin/add.html
没有改变,链接地址问题!

D:\phpStudy\WWW\niwo\application\admin\view\cate\lst.html
原内容
<button type="button" tooltip="添加栏目" class="btn btn-sm btn-azure btn-addon" onClick="javascript:window.location.href = '{:url('admin/add')}'"> <i class="fa fa-plus"></i> Add
修改内容:
<button type="button" tooltip="添加栏目" class="btn btn-sm btn-azure btn-addon" onClick="javascript:window.location.href = '{:url('cate/add')}'"> <i class="fa fa-plus"></i> Add

http://127.0.0.1/niwo/public/index.php/admin/cate/add.html
刷新就对了!

D:\phpStudy\WWW\niwo\application\admin\view\cate\add.html
删除以下内容:
 <div class="form-group">
                                            <label for="group_id" class="col-sm-2 control-label no-padding-right">栏目密码</label>
                                            <div class="col-sm-6">
                                                <input class="form-control" id="password" placeholder="" name="password" |type="text">
                                            </div>
                                            <p class="help-block col-sm-4 red">* 必填</p>
                                        </div>
原内容
<div class="col-sm-6">
                                                <input class="form-control" id="username" placeholder="" name="username" | type="text">
                                            </div>
修改为:
<div class="col-sm-6">
                                                <input class="form-control" id="catename" placeholder="" name="catename" | type="text">
                                            </div>

*============在视图下、修改栏目列表和栏目添加里的内容============↑

*============在控制器下、修改栏目文件和栏目列表内容============↓

D:\phpStudy\WWW\niwo\application\admin\controller\Cate.php
原内容
public function add()
    {
        if(request()->isPost()){
            $data=[
                'username'=>input('username'),
                'password'=>input('password'),
            ];
            $validate = \think\Loader::validate('Cate');
            if(!$validate->scene('add')->check($data)){
                $this->error($validate->getError()); die;
            }
            if(db('cate')->insert($data)){
                return $this->success('添加管理员成功!','lst');
            }else{
                return $this->error('添加管理员失败!');
            }
            return;
        }
        return $this->fetch();
    }
修改为:
public function add()
    {
        if(request()->isPost()){
            $data=[
                'catename'=>input('catename'),
            ];
            $validate = \think\Loader::validate('Cate');
            if(!$validate->scene('add')->check($data)){ 
                $this->error($validate->getError()); die;
            }
            if(db('cate')->insert($data)){ // 将数据库的admin表格修改成数组$data形式
                return $this->success('栏目名称添加成功!','lst');
            }else{
                return $this->error('栏目名称添加失败!');
            }
            return;
        }
        return $this->fetch();
    }

http://127.0.0.1/niwo/public/index.php/admin/cate/lst.html
类的属性不存在:app\admin\model\Cate->username
解决方法:
D:\phpStudy\WWW\niwo\application\admin\view\cate\lst.html
原内容
<tr>
                                            <td align="center">{$vo.id}</td>
                                            <td align="center">{$vo.username}</td>
                                            <td align="center">
                                                <a href="{:url('admin/edit',array('id'=>$vo['id']))}" class="btn btn-primary btn-sm shiny">
                                                    <i class="fa fa-edit"></i> 编辑
                                                </a>
                                                {if condition="$vo['id'] neq 1"}
修改为:
<tr>
                                            <td align="center">{$vo.id}</td>
                                            <td align="center">{$vo.catename}</td>
                                            <td align="center">
                                                <a href="{:url('admin/edit',array('id'=>$vo['id']))}" class="btn btn-primary btn-sm shiny">
                                                    <i class="fa fa-edit"></i> 编辑
                                                </a>

http://127.0.0.1/niwo/public/index.php/admin/cate/lst.html
刷新成功!

*============在控制器里,修改栏目文件和栏目列表内容============↑

*============在验证器里,验证栏目列表内容的唯一性============↓

D:\phpStudy\WWW\niwo\application\admin\validate\Cate.php
修改内容:
<?php
namespace app\admin\validate;
use think\Validate;
class Cate extends Validate
{
    // 验证规则就写在这个数组里面
    protected $rule = [
       'catename'  =>  'require|max:25',
   ];
//     错误提示
   protected $message  =   [
       'catename.require' => '栏目名称必须填写',
       'catename.max' => '栏目名称长度不能大于25位',
   ];
    // 验证 scene 场景
    protected $scene = [
        'add'  =>  ['catename'=>'require'], // 在添加场景限定[]里的验证
       'edit'  =>  ['catename'=>'require'],
    ];
}

// 验证栏目标题唯一性,|unique:cate

<?php
namespace app\admin\validate;
use think\Validate;
class Cate extends Validate
{
    // 验证规则就写在这个数组里面
    protected $rule = [
       'catename'  =>  'require|max:25|unique',
   ];
//     错误提示
   protected $message  =   [
       'catename.require' => '栏目名称必须填写',
       'catename.max' => '栏目长度不能大于25位',
       'catename.unique' => '栏目名称不能重复',
   ];
    // 验证 scene 场景
    protected $scene = [
        'add'  =>  ['catename'=>'require|unique:cate'], // 在添加场景限定[]里的验证 |unique:cate// 验证栏目标题唯一性
        'edit'  =>  ['catename'=>'require|unique:cate'],
    ];
}
http://127.0.0.1/niwo/public/index.php/admin/cate/add.html
catename已存在,修改成功!

*============在验证器里,验证栏目列表内容的唯一性============↑

*============在视图里,删除栏目列表内容============↓

D:\phpStudy\WWW\niwo\application\admin\view\cate\lst.html
原内容
<a href="{:url('admin/edit',array('id'=>$vo['id']))}" class="btn btn-primary btn-sm shiny">
                                                    <i class="fa fa-edit"></i> 编辑
                                                </a>
                                                <a href="#" onClick="warning('确实要删除吗', '{:url('admin/del',array('id'=>$vo['id']))}')" class="btn btn-danger btn-sm shiny">
                                                    <i class="fa fa-trash-o"></i> 删除
                                                </a>
修改为:
<a href="{:url('cate/edit',array('id'=>$vo['id']))}" class="btn btn-primary btn-sm shiny">
                                                    <i class="fa fa-edit"></i> 编辑
                                                </a>
                                                <a href="#" onClick="warning('确实要删除吗', '{:url('cate/del',array('id'=>$vo['id']))}')" class="btn btn-danger btn-sm shiny">
                                                    <i class="fa fa-trash-o"></i> 删除
                                                </a>

D:\phpStudy\WWW\niwo\application\admin\controller\Cate.php
修改为:
public function del(){ // 删除的方法
        $id = input('id'); // 把input('id')赋值给$id
        if($id != 1) { // 如果$id不等于1
            if (db('cate')->delete(input('id'))) {
                $this->success('栏目名称删除成功!', 'lst');
            } else {
                $this->error('栏目名称删除失败!');
            }
        }else{
            $this->error('初始化栏目名称不能删除!');

        }
    }
}

*============在视图里,删除栏目列表内容============↑

*============在视图里,修改栏目和栏目列表内容============↓

D:\phpStudy\WWW\niwo\application\admin\view\cate\add.html
全部复制,粘贴,到
D:\phpStudy\WWW\niwo\application\admin\view\cate\edit.html

http://127.0.0.1/niwo/public/index.php/admin/cate/edit/id/1.html
编辑界面就出来了!
D:\phpStudy\WWW\niwo\application\admin\view\cate\edit.html
原内容
<ul class="breadcrumb">
                    <li>
                        <a href="#">系统</a>
                    </li>
                    <li>
                        <a href="{:url('admin/lst')}">栏目管理</a>
                    </li>
                    <li class="active">添加栏目</li>
                </ul>

<div class="widget-header bordered-bottom bordered-blue">
                                <span class="widget-caption">新增栏目</span>
                            </div>
修改为:
<ul class="breadcrumb">
                    <li>
                        <a href="#">系统</a>
                    </li>
                    <li>
                        <a href="{:url('cate/lst')}">栏目管理</a>
                    </li>
                    <li class="active">修改栏目</li>
                </ul>

div class="widget-header bordered-bottom bordered-blue">
                                <span class="widget-caption">修改栏目</span>
                            </div>
原内容
<div class="form-group">
                                            <label for="username" class="col-sm-2 control-label no-padding-right">栏目名</label>
                                            <div class="col-sm-6">
                                                <input class="form-control" id="catename" placeholder="" name="catename" | type="text">
                                            </div>
                                            <p class="help-block col-sm-4 red">* 必填</p>
                                        </div>
修改为:<div class="form-group">
                                            <label for="username" class="col-sm-2 control-label no-padding-right">栏目名</label>
                                            <input type="hidden" name="id"value="{$cates.id}">
                                            <div class="col-sm-6">
                                                <input class="form-control" id="catename" placeholder="" name="catename" value="{$cates.catename}" type="text">
                                            </div>
                                            <p class="help-block col-sm-4 red">* 必填</p>
                                        </div>

D:\phpStudy\WWW\niwo\application\admin\controller\Cate.php
原内容
public function edit(){
        $id = input('id');
        $cates = db('cate')->find($id);
        if(request()->isPost()){
            $data = [
                'id' =>input('id'),
                'username' =>input('username'),
            ];
            if(input('password')){ // 如果修改管理员密码
                $data['password'] = md5(input('password')); // 在$data数组中修改,然后加密
            }else{
                $data['password'] = $cates['password']; // 否则密码留空,用原有密码
            }
            $validate = \think\Loader::validate('cate');
            if(!$validate->scene('edit')->check($data)){ // 在编辑场景验证
                $this->error($validate->getError()); die;
            }
            if(db('cate')->update($data)){ //
                $this->success('修改管理员成功!','lst');
            }else{
                $this->error('修改管理员失败!');
            }
            return;
        }
修改为:
public function edit(){
        $id = input('id');
        $cates = db('cate')->find($id);
        if(request()->isPost()){
            $data = [
                'id' =>input('id'),
                'catename' =>input('catename'),
            ];
            $validate = \think\Loader::validate('cate');
            if(!$validate->scene('edit')->check($data)){
                $this->error($validate->getError()); die;
            }
            if(db('cate')->update($data)){ //
                $this->success('栏目名称修改成功!','lst');
            }else{
                $this->error('栏目名称修改失败!');
            }
            return;

*============在视图里,修改栏目和栏目列表内容============↑

//***************验证管理员添加的唯一性**********↓

D:\phpStudy\WWW\niwo\application\admin\validate\Admin.php
原内容
// 验证规则就写在这个数组里面
    protected $rule = [
        'username'  =>  'require|max:25',
        'password' =>  'require',
    ];
    // 错误提示
    protected $message  =   [
        'username.require' => '管理员名称必须填写',
        'username.max' => '管理员名称长度不能大于25位',
        'password.require' => '管理员密码必须填写',
    ];
    // 验证 scene 场景
    protected $scene = [
        'add'  =>  ['username'=>'require','password'], // 在添加场景限定[]里的验证
        'edit'  =>  ['username'=>'require'],
    ];
修改为:
// 验证规则就写在这个数组里面
    protected $rule = [
        'username'  =>  'require|max:25|unique',
        'password' =>  'require',
    ];
    // 错误提示
    protected $message  =   [
        'username.require' => '管理员名称必须填写',
        'username.max' => '管理员名称长度不能大于25位',
	'password.unique' => '管理员名称不能重复',
        'password.require' => '管理员密码必须填写',
    ];
    // 验证 scene 场景
    protected $scene = [
        'add'  =>  ['username'=>'require|unique:admin','password'], // 在添加场景限定[]里的验证
        'edit'  =>  ['username'=>'require|unique:admin'],
    ];
//***************验证管理员添加的唯一性**********↑

文章来源: ThinkPhp学习笔记——栏目功能完成及唯一性验证补充

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:ThinkPhp学习笔记——栏目功能完成及唯一性验证补充