在ini文件中的Zend框架路由链接

时间:2010-10-26 21:11:11

标签: php zend-framework routes

我的路线配置如下:

routes.rooms.type = "Zend_Controller_Router_Route_Static"
routes.rooms.route = "/rooms"
routes.rooms.defaults.module = "rooms"
routes.rooms.defaults.controller = "index"
routes.rooms.defaults.action = "index"

routes.rooms.chains.room.type = "Zend_Controller_Router_Route_Regex"
routes.rooms.chains.room.route = "/(\d+)"
routes.rooms.chains.room.defaults.action = "room"
routes.rooms.chains.room.map.1 = "room_id"
routes.rooms.chains.room.reverse = "/%d"

;admin
routes.rooms.chains.admin.type = "Zend_Controller_Router_Route_Static"
routes.rooms.chains.admin.route = "/admin"
routes.rooms.chains.admin.defaults.controller = "admin"
routes.rooms.chains.admin.defaults.action = "index"

routes.rooms.chains.admin.chains.deletedrooms.type = "Zend_Controller_Router_Route_Regex"
routes.rooms.chains.admin.chains.deletedrooms.route = "/deletedRooms(?:/(\d+))?"
routes.rooms.chains.admin.chains.deletedrooms.defaults.action = "deletedrooms"
routes.rooms.chains.admin.chains.deletedrooms.map.1 = "page_id"
routes.rooms.chains.admin.chains.deletedrooms.defaults.1 = 1
routes.rooms.chains.admin.chains.deletedrooms.reverse = "/deletedRooms/%d"

所有路线似乎都很好但是当尝试使用路线构建导航菜单(当前尝试使用房间管理员)时,页面什么都没有显示(空白页面,没有错误)。如果删除路由,则会显示一条错误消息,指出路由尚未定义;有道理。

如果我评论出房间管理员,后来的路线'rooms-admin-deletedrooms'工作正常..所以看起来房间管理员就是问题。

我已经看到了这个:How do I write Routing Chains for a Subdomain in Zend Framework in a routing INI file?但我不想使用主机名部分,我希望我的路由相对于默认路由系统(进行更改需要太长时间)。任何可能导致此错误的想法都是正确定义的路线吗?

另一方面,解析的更快:ini还是xml?我猜测一个php数组是所有选项中最快的方法。

1 个答案:

答案 0 :(得分:0)

不确定您遇到的链接问题,但我确实对解析配置的问题提出了建议。在APC中缓存生成的配置,因为它只是一个数组。

<?php
...
/** Zend_Application */
require_once 'Zend/Application.php';

// Use default application.ini config the first time
// then pull the php array from apc
$config_file = APPLICATION_PATH . '/configs/application.ini';
$config_cached = false;
if (apc_exists('application.ini')) {
    $config_file = apc_fetch('application.ini');
    $config_cached = true;
}

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    $config_file
);

// cache the application.ini config if this is staging or production
if (!$config_cached && ('development' != APPLICATION_ENV)) {
    apc_add('application.ini', $application->getOptions());
}

参考:http://www.hellotecho.com/cache-your-zend-framework-config-to-improve-performance