# demommhc **Repository Path**: helloz/demommhc ## Basic Information - **Project Name**: demommhc - **Description**: No description available - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2015-03-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #mamahaocai [针对开发者] 妈妈好菜订餐平台提醒您:在使用妈妈好菜订餐平台(以下简称妈妈好菜)前,请您务必仔细阅读并透彻理解本声明。您可以选择不使用妈妈好菜,但如果您使用妈妈好菜,您的使用行为将被视为对本声明全部内容的认可。 注:在ThinkPHP框架 index.php 文件中: /* 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',True); */ 1. ThinkPHP隐藏掉index.php操作: URL重写: 通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持。 下面是Apache的配置过程,可以参考下: 1、httpd.conf配置文件中 加载了mod_rewrite.so模块 2、httpd.conf配置文件中 AllowOverride None 将 None 改为 All 3、确保ThinkPHP框架中config.php中 URL_MODEL设置为‘2’ 4、重启Apache,操作即可成功 下面是重写的定义示例: http://serverName/index.php/Blog/read/id/1 就可以通过访问 http://serverName/Blog/read/id/1 简化了URL地址。 2. ThinkPHP URL伪静态操作: URL路由: ThinkPHP支持URL路由功能,要启用路由功能,需要设置URL_ROUTER_ON 参数为true。开启路由功能后,并且配置URL_ROUTE_RULES参数后,系统会自动进行路由检测,如果在路由定义里面找到和当前URL匹配的路由名称,就会进行路由解析和重定向。 3.0版本的路由支持做了增强,包含规则路由和正则路由支持。 规则路由: 规则路由是由2.1版本的简单路由进化而来,定义格式为: 格式1:'路由规则'=>'[分组/模块/操作]?额外参数1=值1&额外参数2=值2...' 格式2:'路由规则'=>array('[分组/模块/操作]','额外参数1=值1&额外参数2=值2...') 格式3:'路由规则'=>'外部地址' 格式4:'路由规则'=>array('外部地址','重定向代码') 注意事项: 路由规则中如果以“:”开头,表示动态变量,否则为静态地址 格式2的额外参数可以传入数组或者字符串 外部地址中如果要引用动态变量, 采用 :1、:2 的方式 路由规则支持变量的数字约束定义,例如:'news/:id\d'=>'News/read' 规则路由可以支持 全动态和动静结合定义,例如':user/blog/:id'=>'Home/Blog/user' 路由规则非数字变量支持排除,例如 'news/:cate^add|edit|delete'=>'News/category' 路由规则中的静态地址部分不区分大小写 下面是规则路由的定义示例: 'URL_ROUTER_ON' => true, //开启路由 'URL_ROUTE_RULES' => array( //定义路由规则 'news/:year/:month/:day' => array('News/archive', 'status=1'), 'news/:id' => 'News/read', 'news/read/:id' => '/news/:1', /* 'index'=>'Home/Index/index', U函数:U('/index') */ ), 3.ThinkPHP AjaxReturn操作://参见thinkPHP开发手册“AJAX返回” Ajax返回:(①、JS操作:在需要 跳转 或 返回值 的页面引入:“Base.js”、“prototype.js”、“mootools.js”、“ThinkAjax.js” ②、jQuery操作:在需要 跳转 或 返回值 的页面引入:“jquery.js”、“jquery.form.js”) 系统支持任何的AJAX类库,Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、XML和EVAL三种方式给客户端接受数据,通过配置DEFAULT_AJAX_RETURN进行设置,默认配置采用JSON格式返回数据,在选择不同的AJAX类库的时候可以使用不同的方式返回数据。 要使用ThinkPHP的ajaxReturn方法返回数据的话,需要遵守一定的返回数据的格式规范。 1、ThinkPHP返回的数据格式包括: status -> 操作状态 info -> 提示信息 data -> 返回数据 调用示例: $this->ajaxReturn(返回数据,提示信息,操作状态); 返回数据data可以支持字符串、数字和数组、对象,返回客户端的时候根据不同的返回格式进行编码后传输。如果是JSON格式,会自动编码成JSON字符串,如果是XML方式,会自动编码成XML字符串,如果是EVAL方式的话,只会输出字符串data数据,并且忽略status和info信息。 下面是一个简单的例子: $User = M("User"); // 实例化User对象 $result = $User->add($data); if ($result){ // 成功后返回客户端新增的用户ID,并返回提示信息和操作状态 $this->ajaxReturn($result,"新增成功!",1); }else{ // 错误后返回错误的操作状态和提示信息 $this->ajaxReturn(0,"新增错误!",0); } 注意,确保你是使用AJAX提交才使用ajaxReturn方法。 在客户端接受数据的时候,根据使用的编码格式进行解析即可。 如果需要改变Ajax返回的数据格式,可以在控制器Controller中增加ajaxAssign方法定义,定义格式如下: public function ajaxAssign(&$result) { // 返回数据中增加url属性 $result['url'] = $this->url; } 3.1版本以后,ajaxReturn方法可以更加灵活的进行ajax传值,并且废弃了ajaxAssign方法扩展。能够完全定义传值的数组和类型,例如: $data['status'] = 1; $data['info'] = 'info'; $data['size'] = 9; $data['url'] = $url; $this->ajaxReturn($data,'JSON'); data传值数组可以随意定义。 改进后的ajaxReturn方法也兼容之前的写法: $this->ajaxReturn($data,'info',1); 系统会自动把info和1两个参数并入$data数组中,等同于赋值: $data['info'] = 'info'; $data['status'] = 1;