夺命雷公狗ThinkPHP项目之----商城8商品品牌管理

本章的主要目标是为了对商品品牌进行CRUD(增删改查)操作。

我们在写的时候就要了解业务逻辑,也就是了解表结构

每个字段代表什么含义,为什么是这个类型的

logo:保存的是图片,一般是分两个途径来保存的,

1.保存图片的本身,保存在目录之下

2.将图片的路径保存到数据表中

我们先创建一个名字为BrandController的控制器,和在view视图里面创建一个Brand的文件夹来进行存放模版文件,如下图所示:

然后将add里面的css和图片路径该下即可代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SHOP 管理中心 - 品牌管理 </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="__ADMIN__/styles/general.css" rel="stylesheet" type="text/css" />
<link href="__ADMIN__/styles/main.css" rel="stylesheet" type="text/css" />
</head>
<body>

<h1>
<span class="action-span"><a href="index.php?p=admin&c=brand&a=index">商品品牌</a></span>
<span class="action-span1"><a href="index.php?act=main">SHOP 管理中心</a> </span><span id="search_id" class="action-span1"> - 添加品牌 </span>
<div style="clear:both"></div>
</h1>

<div class="main-div">
<form method="post" action="" name="theForm" enctype="multipart/form-data" onsubmit="return validate()">
<table cellspacing="1" cellpadding="3" width="100%">
  <tbody><tr>
    <td class="label">品牌名称</td>
    <td><input type="text" name="brand_name" maxlength="60" value=""><span class="require-field">*</span></td>
  </tr>
  <tr>
    <td class="label">品牌网址</td>
    <td><input type="text" name="url" maxlength="60" size="40" value=""></td>
  </tr>
  <tr>
    <td class="label"><a href="javascript:showNotice(‘warn_brandlogo‘);" title="点击此处查看提示信息">
        <img src="__ADMIN__/images/notice.gif" width="16" height="16" border="0" alt="点击此处查看提示信息"></a>品牌LOGO</td>
    <td><input type="file" name="brand_logo" id="logo" size="45">    <br><span class="notice-span" style="display:block" id="warn_brandlogo">
        请上传图片,做为品牌的LOGO!        </span>
    </td>
  </tr>
  <tr>
    <td class="label">品牌描述</td>
    <td><textarea name="brand_desc" cols="60" rows="4"></textarea></td>
  </tr>
  <tr>
    <td class="label">排序</td>
    <td><input type="text" name="sort_order" maxlength="40" size="15" value="50"></td>
  </tr>
  <tr>
    <td class="label">是否显示</td>
    <td><input type="radio" name="is_show" value="1" checked="checked"> 是        <input type="radio" name="is_show" value="0"> 否        (当品牌下还没有商品的时候,首页及分类页的品牌区将不会显示该品牌。)
    </td>
  </tr>
  <tr>
    <td colspan="2" align="center"><br>
      <input type="submit" class="button" value=" 确定 ">
      <input type="reset" class="button" value=" 重置 ">
    </td>
  </tr>
</tbody></table>
</form>
</div>

<div id="footer">
    版权所有 &copy; 2014-2016 夺命雷公狗 - 技术总结 - </div>
</div>

</body>
</html>

然后我们在BrandController.class.php里面进行修改配置add方法。

add方法是添加品牌的方法,提示,在刚才的表单中name属性,最好尽量和数据表字段的一样。

我们直接在浏览器上打开http://www.shop.com/index.php/Admin/brand/add 即可看到如下所示:

这里面有一个红色的*号,一般都是代表必须填写的,而且还有一个图片上传的地方,那么我们可以通过以下方法来进行解决。

先决解必填的这个。

品牌名称,一般都是唯一的,我们可以通过model层来让他进行判断,我们在model目录下创建一个BrandModel.class.php的文件。

验证可以通过手册进行查找----模型----自动验证---里面有详细的例子

BrandModel.class.php内容如下所示:

<?php
    namespace Admin\Model;
    use Think\Model;
    //品牌模型
    class BrandModel extends Model{
        //自动验证规则
        protected $_validate = array(
            array(‘brand_name‘,‘require‘,‘品牌名称不能为空‘),
            array(‘brand_name‘,‘‘,‘该品牌已存在‘,0,‘unique‘,1),
        );
    }

要使用自动验证,必须使用create方法代码如下所示

<?php
    namespace Admin\Controller;
    use Think\Controller;
    class BrandController extends CommonController{
        //添加品牌
        public function add(){
            if(IS_POST){
                //品牌入库
                //收集表单数据
                $data[‘brand_name‘] = I(‘brand_name‘);
                $data[‘url‘] = I(‘url‘);
                $data[‘brand_desc‘] = I(‘brand_desc‘);
                $data[‘sort_order‘] = I(‘sort_order‘);
                $data[‘is_show‘] = I(‘is_show‘);

                //调用模型完成入库
                $brandModel = D(‘brand‘); //因为是调用Model层的所以要使用到D
                if($brandModel->create($data)){
                    //成功验证,创建数据成功
                    if($brandModel->add()){ //使用create方法之后,这里的add方法不能传参
                            $this -> success(‘添加品牌成功‘,U(‘index‘),1);
                        }else{
                            //验证失败
                            $this -> error(‘添加品牌失败‘);
                            }
                        }else{
                            $this -> error($brandModel->getError());
                    }
                return;
            }
            //载入品牌添加页面
            $this -> display();
        }
    }
时间: 2024-12-09 07:03:59

夺命雷公狗ThinkPHP项目之----商城8商品品牌管理的相关文章

夺命雷公狗ThinkPHP项目之----商城10商品属性管理

我们一般做项目前就要分析业务逻辑先,这次也不例外. attr_type:是指属性的类型,有唯一,单选和多选之分 唯一属性,是指用户在购买商品时,可以看到的扩展属性如下图所示: 单选属性,是指用户在购买的时候,不需要选择的扩展属性,否则就无法购买,如下所示: 多选和单选是对应的,但是可以选择多个,但是单选的只能选择一个,否则就无法购买. attr_input_type:是指属性的输入方式,有文本框,下拉列表和文本域之分,如下图所示: attr_value:是指如果属性是下拉形式的,应该提供可选值.

夺命雷公狗ThinkPHP项目之----商城6后台首页

废话步多说,我们开工, 首先我们将thinkphp文件都解压到环境目录下的shop文件夹下 然后将里面多余的东西都干掉,留下public文件夹和thinkphp文件夹,即可,别的东西干掉, 然后我们新建一个名字叫index.php的文件,里面的配置文件可以按以下方法进行自定义: <?php // 定义项目目录 define("APP_PATH",'./Shop/'); // 开启调试 define("APP_DEBUG",true); // 引入ThinkPH

夺命雷公狗ThinkPHP项目之----商城2数据库设计

重要难度:五星 难度:无形 数据库的设计,就是体现了你对业务逻辑的了解 数据库设计的好坏,有时候决定了项目的成败 要点: 表与表之间的关系(一对一,一对多,多对多) 每一个字段的数据类型(数值,字符串,日期时间)没有布尔类型,使用tinyint来代替,1是真,0是假 设计数据库,以商品为例 找到核心(中心),然后一步步的展开 核心->商品 先来初步设计一下商品表的字段: 名称.价格.图片.颜色.上架时间.各种规格参数.详细描述,库存,品牌.分类. 品牌和商品是两个不同的东西,设计表的一个理念:一

夺命雷公狗ThinkPHP项目之----商城3编程思想

在实际的开发总,往往都是思想决定了高度. oop思想 OOP:Object Oriented Programming,面向对象程序设计,面向对象编程 OOP的三大特征 封装:通过类实现的,将内部实现细节隐藏起来,给外部提供一个接口进行调用 继承:通过extends来实现的,子类可以继承父类的属性和方法(Protected和public) 多态:php本身就是多态的,php是弱类型语言,在php中一般比较少提到多态的概念 OOP的好处 可维护性好 可扩展性好 可重用性高 灵活度高 MVC模式 M:

夺命雷公狗ThinkPHP项目之----商城5快速入门

本章是快速入门篇,有基础可直接跳过: 1.创建一个数据库名叫shopp的,然后穿件一张表 #创建用户表 create table user( id int unsigned not null auto_increment primary key comment '用户编号', username varchar(50) not null default '' comment '用户名', email varchar(50) not null default '' comment '电子邮箱', p

夺命雷公狗ThinkPHP项目之----企业网站1之快速搭建后台

我们还是老规矩照老方法,将框架里面多余的东西都干掉,然后在index.php里面将框架搭建起来 <?php //定义项目目录 define('APP_PATH','./WEB/'); //开启调试 define('APP_DEBUG',True); //包含thinkphp项目入口文件 require "Thinkphp/Thinkphp.php"; 然后进入WEB目录下,并复制一个Home然后改名为Admin 然后再Index控制器下进行操作 代码如下所示: <?php

夺命雷公狗ThinkPHP项目之----企业网站2之数据库的快速设计

我们在一个项目的时候,花费最多事件的估计还是数据库的时间了,我们的数据库暂时就这样设计好了: 暂时我们的数据库就这样设计好了用下先,建好后如下所示:

夺命雷公狗ThinkPHP项目之----企业网站28之网站前台左侧导航的实现

我们基于刚才在model层的找顶级分类的代码在进行修改即可: <?php namespace Home\Controller; use Think\Controller; class CommonController extends Controller { function __construct(){ //继承父类的构造方法,所以网站在执行的时候会先执行他 parent::__construct(); //头部二级分类的显示 开始 $mod = M("Category");

夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是出现了,但是没有向我们平常时候见到的无限极分类一样噢,一般比如分类 多多,分类下面的 好多美女啊 是多多的下级分类,那么好多美女啊他前面是有几个空格之类的隔开, 那么我们就需要在model层里面对她进行排序的设置了: <?php namespace Admin\Model; use Think\Mo