来源:http://trac.seagullproject.org/wiki/Howto/HttpRedirects
SGL_HTTP::redirect()方法用作为页面的转发/重定向,本质上它是一个php头文件功能的封装.调用重定向与创建URLS相似,因为他可以不提供参数,或一个,或很多,顺着这种方式日益增多地定义一个更精确的目标URL.
重定向到相同的页面,并调用当前的action,如果没有action,使用默认的:
SGL_HTTP::redirect();
重定向到相同模块的其它类:
SGL_HTTP::redirect(array('managerName' => 'article'));
重定向到不同模块的不同类
SGL_HTTP::redirect(array('managerName' => 'login', 'moduleName' => 'user'));
最后,下列将重定向到指定模块类的指定action,并传递适当的参数.
$options = array( 'moduleName' => 'publisher' 'managerName' => 'article', 'action' => 'edit', 'frmArticleId' => 23 ); SGL_HTTP::redirect($options);
SGL_HTTP::redirect()方法也
默认情况下,大部分模块通过在管理类的action映射数组中指定redirectToDefault以便在数据修改之后重定向到默认页面。这对应于所有模块父类中的SGL_Manager::_cmd_redirectToDefault。
可能你需要自己决定重定向的目标,这种情况下你可以用相同的方法:
function _cmd_redirectToDefault(&$input, &$output)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
// if no errors have occured, redirect
if (!SGL_Error::count()) {
SGL_HTTP::redirect(array('frmCatID' => $this->_redirectCatId));
// else display error with blank template
} else {
$output->template = 'docBlank.html';
}
}
如果这样配置的话,首先判断是否出错是很重要的,因为它们应该在重定向之前被捕收到,这样它们才能被输出到屏幕上。