2024年4月16日发(作者:)

Anwsion二次开发基础说明

一.文件目录结构说明

app-

应用目录

account-用户账户

controller

c_openid_-

微博登录相关

c_ajax_

c_qq_-

腾讯微博相关

c_find_password_-找回密码

c_setting_-设置

c_main_-

综合

c_sina_-

新浪微博相关

model

account_-用户账户

qq_weibo_-

腾讯微薄

active_-账号激活

reputation_-威望计算

sina_weibo_-

新浪微薄

draft_-草稿

system_-系统功能

education_-教育

ucenter_-UCenter

work_-

工作

online_-在线时长

file-

文件下载

inbox-

站内信

people-用户资料

search-搜索

admin-

后台

follow-

关注相关

invitation-邀请

publish-

发布

topic-话题

crond-计划任务

model

crond_-

计划任务配置

home-主页

model

index_-首页调用计算

module_-

模板

Block

调用

notifications-

通知

model

notify_-通知功能

question-

问题

upgrade-升级脚本

二.URL路由

Anwsion有一个解析能力强大的URL路由

1.动作访问:

/

模块名

/

控制器

/

动作

/ID

ID为id查询,例:account/login/123,则在login控制器中$_GET[‘id’]的值为

123

(*)如果使用/模块名/控制器/动作/ID格式Querystring的使用可以参照兼容性的

支持

(*)如果动作在main控制器中可以省略,例:account/main/login/等同于

account/login/

(*)

如果动作名为

index

可以省略

,

:account/login/index/

等同于

account/login/

tring

Anwsion

的查询字符串为使用

__

分隔参数

,

使用

-

为参数赋值

,

在程序中直接使

用$_GET取出内容

常规的

:account/login/?return_url=1&callback=2

Anwsion的:account/login/return_url-1__callback-2

(*)在程序中输出URL请使用get_js_url函数,因为这样会兼容Rewrite是否开启

两种情况

3.

兼容性的支持

下面的几种URL形式在程序中都是被支持的:

domian/?/question/id-320__column-log__source-doc

domian/?/question/320?column=log&source=doc

domian/?/question/?id=320&column=log&source=doc

domian/?/question/320?column-log__source-doc

domian/?/question/320&column-log__source-doc

三.模板命名规则

程序中所有模板的存放规则为模块

/

控制器

/

动作

,

如果控制器为

main

则省略

如account/main/login/对应的模板为views/模板集/account/

如account/setting/profile/对应的模板为views/模板集/account/setting/

.

自动引入机制

Anwsion类库,Model的使用都是不需要事先引入文件的,这使得在编程过程中变得方便快

捷,也避免了类库重复实例化的问题,但是使用自动引入机制需要遵循下面的规则.

(*)

所有自动引入的类库都不需要事先实例化

,

直接使用即可

.

放在每一个模块的model目录下,文件名:name_

文件中需要有继承AWS_MODEL的name_class

(*)在程序中使用方法:$this->model(‘name’)->action();

(*)可用范围:控制器,Model

类库

放在

system

目录之下

,

类名相对于

system

目录

,

/

换成

_

:Zend_Mail

路径:system/Zend/

类名

:Zend_Mail

(*)在程序中使用方法:new,静态调用,load_class(‘class_name’);

(*)可用范围:任意,不需要带参数实例化建议使用load_class

3.配置文件

放在

system/config

目录之下

,

文件内容为一个

$config

数组

,

命名为配置

名.php

(*)在程序中使用方法:AWS_APP::config()->get(‘配置名’)->数组下标

(*)

可用范围

:

任意

,

不需要带参数实例化建议使用

load_class

五.模板机制

Anwsion

的模板采用继承机制

,

系统的

default

为主模板

,

用户的自定义模板只需要更改很

少的文件即可实现程序界面的定制.

继承机制原理:

当管理员设定了一个

newstyle

模板

,

用户访问首页

系统开始查找views/newstyle/home/

找到相应文件

读取内容并

解析后显示

找不到文件

⬅读取views/default/home/

建立模板集的方法:

1.在views下面建立模板集目录

2.

static/css/

下建立与模板集相同的目录

,

我们建议从

static/css/default/

拷贝一

份内容到新建的模板集中,然后开始修改工作.

.

常用开发指导

JavaScript:

我们使用jQuery作为主要framework,载入的插件有:

jQueryForm(/jquery/form/)

AJAXUpload(/ajax-upload/)

jQueryDateInput

ValumsfileUploader(修改过)

To

(*)

Javascript

中判断用户是否登录判断全局变量

G_USER_ID

是否大于

0

(*)全局变量在header模板中

(*)所有JS请求URL需要加上G_BASE_URL前缀

(*)

全局

ajax

列表函数使用

bp_load_more

PHP:

关于ZendFramwork类库的使用方法请参考官方文档

(*)

在控制器中判断用户是否登录判断

$this->user_id

是否大于

0

即可

(*)控制器与模板中始终可用$this->user_id和$this->user_info

(*)控制器与Model中禁止使用构造函数,可以用setup()函数替代

(*)

程序已经提供了两个中文处理函数

cjk_substr

cjk_strlen

AccessRule:

publicfunctionget_access_rule()

{

//规则类型

//white:actions里的action全部用户可见,其余action需要登录

//black:actions

里的

action

需要登录

,

其余

action

全部用户可见

$rule_action["rule_type"]='white';

$rule_action["actions"]=array(

'check_username',

'check_email',

'register_process',

'login_process',

'register_agreement',

'send_valid_mail',

'valid_email_active',

'request_find_password',

'find_password_modify'

);

return$rule_action;

}

(*)

控制器中不加此函数

,

则所有

action

必需登录可见

模板:

(*)

在模板可以使用

PHP

代码

,

全部静态类与

function,

但是不能使用

Model

(*)模板中$this->中的内容是全局通用变量,可以在模板中引入的模板使用,模板内

部产生的变量则不能