php代码优化
① IS_AJAX && $this->ajaxReturn(1, L('operation_success'));
② (self.attr('data-title') != undefined) ? self.attr('data-title') : lang.confirm_title,
strtoupper() :函数把字符串转换为大写。
getLastInsID():返回最后插入的ID
8.15 Present标签
可以使用present标签来判断模板变量是否已经赋值,
present标签和notpresent标签 |
|
闭合 |
非闭合标签 |
属性 |
name(必须):变量名 |
配合 |
可以结合else标签一起使用 |
用法:
<present name="name">name已经赋值</present>
如果判断没有赋值,可以使用:
<notpresent name="name">name还没有赋值</notpresent>
可以把上面两个标签合并成为:
<present name="name">name已经赋值<else /> name还没有赋值</present>
8.16 Empty标签
可以使用empty标签判断模板变量是否为空,
empty标签和notempty标签 |
|
闭合 |
非闭合标签 |
属性 |
name(必须):变量名 |
配合 |
可以结合else标签一起使用 |
用法:
<empty name="name">name为空值</empty>
如果判断没有赋值,可以使用:
<notempty name="name">name不为空</notempty>
可以把上面两个标签合并成为:
<empty name="name">name为空<else /> name不为空</empty>
5.12 前置和后置操作
系统会检测当前操作是否具有前置和后置操作,如果存在就会按照顺序执行,前置和后置操作的方法名是在要执行的方法前面加 _before_和_after_,例如:
执行结果会先输出before 然后输出index 最后输出after。对于任何操作方法我们都可以按照这样的规则来定义前置和后置方法。
如果当前的操作并没有定义操作方法,而是直接渲染模板文件,那么如果定义了前置 和后置方法的话,依然会生效。真正有模板输出的可能仅仅是当前的操作,前置和后置操作一般情况是没有任何输出的。
需要注意的是,在有些方法里面使用了exit或者错误输出之类的话有可能不会再执行后置方法了。
例如,如果在当前操作里面调用了系统Action的error方法,那么将不会再执行后置操作,但是不影响success方法的后置方法执行。
3.6 读取配置
定义了配置文件之后,可以使用系统提供的C方法(如果觉得比较奇怪的话,可以借助Config单词来帮助记忆)来读取已有的配置:
C('参数名称')//获取已经设置的参数值
例如,C('APP_STATUS') 可以读取到系统的调试模式的设置值,同样,由于配置参数不区分大小写,因此C('app_status')是等效的,但是建议使用大写方式的规范。
如果APP_STATUS尚未存在设置,则返回NULL。
C方法同样可以用于读取二维配置:
C('USER_CONFIG.USER_TYPE')//获取用户配置中的用户类型设置
因为配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,哪怕某个设置参数已经生效过期了。后面我们还会了解到C方法同样还具有给配置参数赋值的作用。
7.5 获取内容
有些时候我们不想直接输出模板内容,而是希望对内容再进行一些处理后输出,就可以使用fetch方法来获取解析后的模板内容,在Action类里面使用:
$content = $this->fetch();
fetch的参数用法和Display方法基本一致,也可以使用:
$content = $this->fetch('Member:read');
区别就在于display方法直接输出模板文件渲染后的内容,而fetch方法是返回模板文件渲染后的内容。如何对返回的结果content进行处理,完全由开发人员自行决定了。这是模板替换的另外一种高级方式,比较灵活,而且不需要通过配置的方式。
注意,fetch方法仍然会执行上面的模板替换操作。