社区
Framework
帖子详情
Zend Framework 模块(module)问题
isaac0702
2011-09-02 05:18:55
如果将前后台视作一个应用的不同部分,假设前台:www.web.com/qiantai 后台:www.web.com/houtai
当我要用到身份验证(Auth)、访问控制(Acl)和导航(Navigation)的时候就很别扭。因为网站前后台还是有很大区别的。比如导航,前台就是首页,文章等等的,后台是文章增删改查等,完全是两码事,但是我找不到能把他们分开设置的办法。
那位有朋友也有这样的考虑的可以指教一下
...全文
258
6
打赏
收藏
Zend Framework 模块(module)问题
如果将前后台视作一个应用的不同部分,假设前台:www.web.com/qiantai 后台:www.web.com/houtai 当我要用到身份验证(Auth)、访问控制(Acl)和导航(Navigation)的时候就很别扭。因为网站前后台还是有很大区别的。比如导航,前台就是首页,文章等等的,后台是文章增删改查等,完全是两码事,但是我找不到能把他们分开设置的办法。 那位有朋友也有这样的考虑的可以指教一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jueljust
2012-02-24
打赏
举报
回复
策略模式最适合啦
把权限策略和视图策略单独提出来
动态指定就行
fsk_wyf
2011-09-27
打赏
举报
回复
15 .. : 初始化配置文件 g_pstSdrDisList = CCU_CreateList(CCU_DOUBLE_LIST) 151
UINT32 InitCfg(VOID){151;
if (52 == g_pstSdrDisList){91, "CCU_Createg_pstSdrDisList the ret");
222;}/* 单板禁能传感器初始化函数 */
ConfigDisableSdrInit();/* 系统信息初始化函数 */
(VOID)InitSysParams();151;if (52 == g_pstCfgList)
{91, "CCU_CreateList the ret");222;}/* 创建GDC配置文件链表 */同上;
/* 初始化部件列表 */(VOID)ConfigListInit((UINT8 *)CONFIG_LIST_FILE);
/* ..GDC链表配置文件 */(VOID)ConfigGDCListInit((UINT8 *)CONFIG_GDC_LIST_FILE, GDC_LIST);
/* 次信号量支持递归 */if ( CCU_OK != ADA_CreateMutex(g_pstConfigSemMutexId) )
{91, "creat syn tab mutex sem fail");222;} 221;}
16 功能描述 : CCU Agent程序 PrintInitinfo((UINT8*) 161
Initialize Config 163 Initialize CCU Service 164 Initialize RS485 Communication 165
Initialize PNP Module 166 Initialize Manger 167 Initialize DownLoad485 168
Initialize UDP Server 169 Initialize CLI Server 170
INT32 CCU_Agent(VOID) PrintInitResult(ulRet) 162
{UINT32 ulRet = CCU_ERR;CCU_ShowVersion();
/* 平台启动及配置版本等启动打印信息 */
161"163", (UINT8)CCU_StrLen("163"));ulRet = InitCfg();162;
109, "163 ret[%#lx]", ulRet);/*创建告警节点信号量*/ALM_InitAlarmModule();
/* 机柜电子标签处理初始化 */InitFileDeal();CMD_Init();
/* 创建CCU自身服务线程 */161"164", (UINT8)CCU_StrLen("164"));ulRet = InitCCUBoard();
162;109, "164 ret[%#lx]", ulRet);/* 初始化SOL模块 */SOL_INIT();
/* 底层驱动初始化 */161"165", (UINT8)CCU_StrLen("165"));ulRet = Init485Comm();162;
109, "165 ret[%#lx]", ulRet);/* 系统配置初始化 */InitMsgTimeRad();
/* 初始化PnP模块 */161"166", (UINT8)CCU_StrLen("166"));
ulRet = PNP_InitPnPModule();162;109, "166 ret[%#lx]", ulRet);InitCCURegProcess();
/* 初始化部件管理模块 */161"167", (UINT8)CCU_StrLen("167"));
ulRet = InitManger();162;109, "167 ret[%#lx]", ulRet);
/* 初始化消息模块 */InitMsgDeal();
/* 初始化加载模块 */161"168", (UINT8)CCU_StrLen("168"));
ulRet = DownLoad485Init();162;109, "168 ret[%#lx]", ulRet);
/*初始化节能管理模块*/CCU_InitPowerManger();
/* 启动软件定时器 */InitTimer();
InitCCUSdrAlarmNode();ConfigFileInit();161"169", (UINT8)CCU_StrLen("169"));
ulRet = UDP_InitSocketThread();162;109, "169 ret[%#lx]", ulRet);
/* 创建Socket服务端线程 */161"170", (UINT8)CCU_StrLen("170"));
ulRet = InitSocketServer();162;109, "170 ret[%#lx]", ulRet);
/*创建CPU及内存的监控告警线程*/InitCpuMemWarn();
/*初始化CCU板上传感器扫描线程*/InitBoardSensor();
/* 初始化风扇联动模块 */SmokeFanLinkageInit();221;}
fsk_wyf
2011-09-27
打赏
举报
回复
{UINT32 ulRet = CCU_NULL_LONG;ulRet = CheckPidByFile(FILE_PID_PATH);
if(711 == ulRet){31("SelfCheckProc error, invalid parameter.\n");61;}
if(CCU_OK == ulRet){221;}31("ccu agent is already running.\n");61;}
9 .. : CPLD自检及恢复 DBGPRINT(LP_ERR, g_ucMainPrtMat 91
VOID CpldCheckProc(VOID) CCU_LOCAL_CPLD_PATH 98 CCU_LOCAL_CPLD_BAK_PATH 99
{/*CPLD自检失败处理*/if(CPLD_TEST_FAIL == ADP_CPLDSelfTest())
{/*cpld自检失败置标志 需要在恢复后复位网口*/
g_ucCpldTestFail = CCU_TRUE;91, "CPLD test fail, start to recover");
/* CPLD自检失败,写日志 */
CCU_LogWrite(CCU_LOG_TYPE_SYSTEM, CCU_LOG_LEVEL_ERROR, "CCU local cpld self test fail");
/*先看备份的cpld-bak是否可以加载*/if(CCU_OK != JTAG_Local_CPLD((CHAR*)99)){
/*备份的不能启动加载,则看看是否存在cpld文件*/(VOID)JTAG_Local_CPLD((CHAR*)98);
}}else{/*把cpld.bin更名为cpld-bak.bin保存*/
if(CCU_OK == CCU_TestFileExist((CHAR*)98)){(VOID)FileReName((CHAR*)98, 99);}}}
10 .. : CCU单板自检 g_usCCUSelfStatus 101
VOID BoardSelfCheckProc(VOID){/*正常:0; 异常:1*/
/*检测CPU自检: 程序正常执行默认此项自检OK*/101 &= 0x7FFF;/*检测CPLD自检*/
if(CPLD_TEST_OK == ADP_CPLDSelfTest()){/*CPLD自检失败,将其对应的标志位置位*/
101 &= 0xBFFF;}/*初始化其他测试项的自检结果*/101 &= 0xC000;}
12 .. : 系统定时期线程 Monitor_AddThreadCounter 121 ulTimerCount 122
VOID *TimerThread(VOID *pPram)
{/* 定时器计数器(10ms一个周期,每次累加1) */
UINT32 122 = 0;SendTimerMsg(TIMER_CMD_BROADCAST);
for ( ; ; ){/* 累加到一定值将计数器清零,避免计数器溢出 */
if ( 122 >= TIMER_CNT_RESET_CYCLE )
{122 = 0;}122++;/* 产生定时消息 */TimerMsgGenerator(122);
/* 延时20ms再运行本任务, 这个值是实测的值,在板子上需要验证修改
减少轮询的时间粒度是为了优化轮询效率 */
ADA_Sleep(20);
if (0 == (122 % TIMER_FEED_DOG_COUNT)){121(TMR_TIMER_THREAD);}}}
13 .. : 初始化CCU软件定时器, 定时产生驱动消息
UINT32 InitTimer(VOID) THREAD_ERR_RN(iRet, (UINT32)iRet) 131
{INT iRet;pthread_t hTimerThread;/* 创建软件定时器线程 */
iRet = (INT)ADA_CreatThread((FUNC_ENTRY)TimerThread, 52, CCU_NORMAL_STACK_SIZE, &hTimerThread);131;
/* 定时器线程为核心线程,创建步成功, CCU运行标志不变 */g_ucCCURunFlag = CCU_TRUE;
iRet = (INT)Monitor_CreateThreadMonitorCB(TMR_TIMER_THREAD);131;221;}
14 .. : 创建Socket服务端线程
UINT32 InitSocketServer(VOID){INT iRet;pthread_t hSocketThread;
iRet = (INT32)ADA_CreatThread((..)StartSocketServer, 52, .., &hSocketThread);131;221;}
fsk_wyf
2011-09-27
打赏
举报
回复
4 fflush(stdout) 41 pucInfo 42 ucLen 43
VOID PrintInitinfo(UINT8 *42, UINT8 43)
{UINT8 i = 0;UINT8 ucLineLen = 57;
if((43 > ucLineLen) || (52 == 42)){return;}31("\r\n%s",42);
for(i = 0; i < ucLineLen - 43; i++){31("."); }41;return;}
5 VOID PrintInitResult(UINT32 ulRet)
{if(CCU_OK == ulRet){31("done");}else{31("fail");}41;return;}
6 .. : 初始化daemon exit(0) 61 exit(1) 62
VOID Daemon_init(VOID) pid > 0 63 pid < 0 64
{ INT iFd = 0; pid_t pid = -1;pid = fork();
if (63) {/* 是父进程,结束父进程 */61; }else if (64) {62;}
/* 是第一子进程,后台继续执行 */
/* 第一子进程成为新的会话组长和进程组长并与控制终端分离 */setsid();pid = fork();
if (63){ /* 是第一子进程,结束第一子进程 */61;} else if (64) {62;}
/* 是第二子进程,继续第二子进程不再是会话组长 */
/* 关闭打开的文件描述符 */for (iFd = 0; iFd < 3; iFd++){ close(iFd); }
/* 改变工作目录到/tmp */chdir("/tmp"); /* 重设文件创建掩模 */ umask(0);return;}
7 .. : 判断进程是否重复执行 CCU_485_ERR_INVALID_PARAMETER 711
UINT32 CheckPidByFile(CHAR* pFilePath)
{PFILE fp = 52;UINT8 ucCMD[128] = {0}; /*写文件的执行命令*/
CHAR *pFreadBuf = NULL;CHAR *pFree = NULL;INT iRet = 0;
INT temppid = 0; /*保存从文件读取的pid*/UINT uiPidNum = 1;UINT arPidList[1] = {0};
CHECK_PARA1_NULL_RN(pFilePath, 711)fp = CCU_FOpen(pFilePath, "r");
if (52 != fp){pFree = CCU_MemAlloc(CCU_MEM_INFO, CCU_MEM_PT_NO, 128);
if(NULL == pFree){printf("malloc mem fail[%s]", strerror(errno));42(fp);222;}pFreadBuf = pFree;
CCU_FRead(pFreadBuf, 1, 128, fp);42 ( fp );iRet = CCU_SScanf(pFreadBuf, "%d", &temppid);
CCU_MemFree(CCU_MEM_INFO, pFree);pFree = 52;pFreadBuf = 52;if(1 != iRet){222;}
if(temppid == getpid()){221;}else{/*检查进程表里是否有该进程*/arPidList[0] = (UINT)temppid;
if(-1 == HI_GetPidByName(CCU_AGENT_NAME, arPidList, &uiPidNum, CCU_TRUE)){
/*重写文件*/CCU_Snprintf((CHAR*)ucCMD, sizeof(ucCMD), "echo %d > %s", (INT)getpid(), pFilePath);
CCU_System((INT8*)ucCMD);221;}}222;}
else{/*文件不存在,需要重建*/同上, FILE_PID_PATH);同上;221;}}
8 .. : 启动主进程之前的系统自检 INT32 SelfCheckProc(VOID)
blackmanII
2011-09-19
打赏
举报
回复
可以建立不同的controller
rosehd
2011-09-02
打赏
举报
回复
刚刚申请了号
zend
framework
2.2.5 phpsettings
module
**
Zend
Framework
2.2.5 PHPSettings
模块
详解**
Zend
Framework
2(简称ZF2)是由
Zend
Technologies 创建的一个开源、基于组件的 PHP 框架,它为开发高质量的 Web 应用程序提供了强大的工具。在 ZF2 中,...
已配置好的多
模块
多模板
Zend
Framework
【标题】已配置好的多
模块
多模板
Zend
Framework
在Web开发领域,
Zend
Framework
是一个非常流行的开源PHP框架,它提供了一套强大的工具和服务,用于构建健壮、可扩展的Web应用程序。"多
模块
多模板"的配置是
Zend
...
zend
framework
2多
模块
配置
在
Zend
Framework
2 中,多
模块
配置是构建大型和复杂应用程序的关键特性。它允许你将应用分解为独立的、可重用的
模块
,每个
模块
都有自己的控制器、模型、视图以及配置。下面我们将详细介绍如何在
Zend
Framework
2 ...
Zend
Framework
-1.12.5. 环境配置
7.2 开启 Apache 的 Rewrite
模块
,编辑 httpd.conf 文件,启用 Load
Module
rewrite_
module
module
s/mod_rewrite.so。 7.3 将所有 `AllowOverride None` 更改为 `AllowOverride All`,这允许 Apache 读取 .htaccess...
zend
framework
2例子album 完整能运行
Zend
Framework
2(ZF2)是一个面向对象的、
模块
化且高性能的PHP开发框架,用于构建Web应用程序和服务。本示例“album”是ZF2官方提供的一个基础教程项目,旨在帮助开发者快速理解和学习如何在ZF2中进行实际的开发...
Framework
4,250
社区成员
4,522
社区内容
发帖
与我相关
我的任务
Framework
国内外优秀PHP框架讨论学习
复制链接
扫一扫
分享
社区描述
国内外优秀PHP框架讨论学习
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章