July, 2010Archive for

ThinkPHP判断当前操作的请求类型

在很多情况下面,我们需要判断当前操作的请求类型是GET POST 甚至是PUT DELETE,一方面可以针对作出不同的逻辑处理,另外一方面有些情况下面需要验证安全性,过滤不安全的请求。 TP的Action类内置了一些判断方法用于判断请求类型,包括: isGet 是否是GET提交 isPost 是否是POST提交 isPut 是否是PUT提交 isDelete 是否是DELETE提交 isHead 是否是HEAD提交 使用举例如下: 另外还提供了一个判断当前是否属于AJAX提交的方法 isAjax 是否属于AJAX提交 需要注意的是,如果使用的是ThinkAjax或者自己写的Ajax类库的话,需要在表单里面添加一个隐藏域,告诉后台属于ajax方式提交,默认的隐藏域名称是ajax(可以通过VAR_AJAX_SUBMIT配置),如果是JQUERY类库的话,则无需添加任何隐藏域即可自动判断。

利用ThinkPHP路由实现用户动态URL

之前讲过利用空操作实现的用户动态URL,其实路由也可以实现同样的功能,例如: 我们本来有一个User模块的read操作,现在的URL是 http://serverName/User/read/id/3 我们希望缩短成 http://serverName/User/3 现在无需修改任何代码,只需要增加路由定义即可。 要使用路由,确保首先开启路由 ‘URL_ROUTER_ON’=>true 然后在项目配置目录下面增加routes.php 路由定义文件,添加下面的定义: return array( ‘User@’=>array( array(‘/^\/(\d+)$/’,'User’,'read’,'id’), ), ); 现在就可以使用 http://serverName/User/3 和 http://serverName/User/read/id/3 同时访问了

ThinkPHP模型单独设置数据表的前缀

ThinkPHP的数据表前缀一般是统一定义的,但是如果个别数据表的前缀不统一的话应该如何处理。 例如,大多数表的前缀是think_ 而有两个表的前缀是top_,应该怎么处理? 解决办法是在模型里面单独设置自己的表前缀,例如: 我们在项目配置文件里面设置 ‘DB_PREFIX’=>’think_’ 其实TP的惯例配置默认就是上面的设置,呵呵~ 然后在模型里面单独设置个别的表前缀,代码如下: class UserModel extends Model{ protected $tablePrefix = ‘top_’; } 实例化UserModel后,实际连接的数据表就变成了top_user,而不再是think_user。

创建数据对象后的更改

在使用ThinkPHP的create方法之后,我们仍然可以对创建的数据对象进行任何操作。 例如: ThinkPHP模型的create方法是用于创建数据对象,因为是创建到内存,因此在写入数据库之前可以随意添加或者更改。很多开发者为了需要自己设置字段,而放弃 create方法,其实大可不必。 上面的处理方式有两个好处: 1、动态的更改字段可以避免在模型里面定义定义自动完成 或者直接使用M方法实例化模型而减少开销 2、可以解决在某些特殊的情况下难以统一定义自动完成的情况.

巧用模型的表后缀实现多语言数据存储

在网站开发的时候经常需要用到多语言的网站版本,这里我们介绍一种巧用模型的后缀来实现的多语言表的连接。 假如我们需要存储网站的三个语言版本的数据,包括:简体中文、繁体中文和英文。 假设分别对应了数据库的三个表(以新闻表为例) think_new_cn 简体中文(默认语言) think_new_tw 繁体中文 think_new_en 英文 并且假设三个表的结构是一致的,只是表名不同。 然后,我们创建New模型如下:(注意我们只是创建了一个模型,而不是创建三个模型)

Thinkphp的URL伪静态

TP里面有一个URL伪静态的功能,本来是用于把URL伪装成一个静态页面地址用于SEO优化,例如设置: ‘URL_HTML_SUFFIX’=>’.html’ 就可以实现 http://serverName/Down.html 这样的URL,实际上就是和 http://serverName/Down 具有同样的作用。 稍微改进下,其实这个功能还可以起到表面上伪装网站技术的作用,呵呵~ 例如,想忽悠客户你什么语言都能开发,遇到需要.Net的客户我们改成 ‘URL_HTML_SUFFIX’=>’.aspx’ 就可以把 http://serverName/Down 伪装成 http://serverName/Down.aspx 遇到要求Java的客户,我们可以改成 ‘URL_HTML_SUFFIX’=>’.do’ 或者 ‘URL_HTML_SUFFIX’=>’.jsp’

空间不支持Thinkphp的PATHINFO处理

经常遇到的一个问题就是,在本地测试环境没有任何问题,但是部署到客户的正式环境后,发现不管输入什么URL地址,访问的永远都是首页(也就是默认模块的默认操作),这个时候,第一感觉就是要查看空间是否支持PATHINFO。 由于开发工作基本完成,这个时候再去改变URL地址的话,模板工作量会比较大。例如,可能需要把所有的类似 http://serverName/index.php/User/add 这样的URL地址改成 http://serverName/index.php?m=User&a=add 如果你的模板里面没有使用U方法统一生成URL的话,这个工作量随着模板文件的多少会有成倍的增长。 在这样的情况下面,最安全的方式,其实是调整URL模式,只需要做两步操作即可: 1、在项目配置文件里面设置:’URL_MODEL’=>3 2、清空模板缓存目录(通常默认是项目的Runtime/Cache/) 这样设置后,系统的模板文件无需做任何更改,例如原来的模板里面的连接地址是 __URL__/add 或者 __APP__/User/add 这样的话,系统生成的...

How do I add a new currency in opencart?

Adding a new currencies in opencart is very simple. 1. Login to the admin panel of your store 2. Goto Admin->Configuration->Localisation->Currency 3. Click on the "Insert" icon at the top 4. Here we can enter the details of our new currency. For this example, I will use "Canadian Dollars" Currency Title: Canadian Dollar Currency Code: CAD Symbol Left: $ Symbol Right: Decimal places: 2 Value: 1.000000 5. Click "Save" icon at the top. Now you should see this currency...

How to fix prestashop mailalert no voucher code display?

My prestashop Version 1.1.0.5. I have a problem with mailalert module before, which is the Voucher code and voucher value do not display in the email 'New Order'. If you have same problem, you can fix it in a minute. Open file '/modules/mailalerts/mailalerts.php'. Find line #106 Replace it to All Done! Download Free prestashop modules here