本文整理汇总了PHP中sfContext::getRouting方法的典型用法代码示例。如果您正苦于以下问题:PHP sfContext::getRouting方法的具体用法?PHP sfContext::getRouting怎么用?PHP sfContext::getRouting使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sfContext
的用法示例。
在下文中一共展示了sfContext::getRouting方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getThemeForRequest
/**
* Attempts to return the theme for the current request
*
* This first throws a sympal.theme.set_theme_from_request event, giving
* anyone the opportunity to determine the theme. If this event is not
* handled, we continue with some default rules for setting themes.
*
* @param sfContext $context
* @param array An array of valid themes, to be used for user-entered themes
*
* @return string The theme (defaults to the default theme)
*/
public function getThemeForRequest(sfContext $context, $validThemes)
{
$event = $context->getEventDispatcher()->notifyUntil(new sfEvent($this, 'theme.set_theme_from_request', array('context' => $context)));
if ($event->isProcessed()) {
return $event->getReturnValue();
}
if ($this->getOption('allow_changing_theme_by_url', true)) {
$user = $context->getUser();
$request = $context->getRequest();
if ($theme = $request->getParameter($this->getOption('theme_request_parameter_name', 'sf_theme'))) {
// make sure the theme is valid
if (in_array($theme, $validThemes)) {
$user->setCurrentTheme($theme);
return $theme;
} else {
// unset the user attribute
$user->setCurrentTheme(false);
}
}
if ($theme = $user->getCurrentTheme()) {
return $theme;
}
}
// Get the theme from module/route. False is a valid response (don't set theme)
$module = $context->getModuleName();
$route = $context->getRouting()->getCurrentRouteName();
$theme = $this->getThemeFromConfig($module, $route);
if ($theme || $theme === false) {
return $theme;
}
return $this->getOption('default_theme');
}
示例2: initialize
/**
* Initializes the cache manager.
*
* @param sfContext $context Current application context
* @param sfCache $cache An sfCache instance
*/
public function initialize($context, sfCache $cache)
{
$this->context = $context;
$this->dispatcher = $context->getEventDispatcher();
$this->controller = $context->getController();
// empty configuration
$this->cacheConfig = array();
// cache instance
$this->cache = $cache;
// routing instance
$this->routing = $context->getRouting();
}
示例3: initialize
/**
* Initializes the cache manager.
*
* @param sfContext $context Current application context
* @param sfCache $cache An sfCache instance
*/
public function initialize($context, sfCache $cache)
{
$this->context = $context;
$this->dispatcher = $context->getEventDispatcher();
$this->controller = $context->getController();
if (sfConfig::get('sf_web_debug')) {
$this->dispatcher->connect('view.cache.filter_content', array($this, 'decorateContentWithDebug'));
}
// empty configuration
$this->cacheConfig = array();
// cache instance
$this->cache = $cache;
// routing instance
$this->routing = $context->getRouting();
}
示例4: initialize
/**
* Initializes the cache manager.
*
* @param sfContext $context Current application context
* @param sfCache $cache An sfCache instance
*/
public function initialize($context, sfCache $cache, $options = array())
{
$this->context = $context;
$this->dispatcher = $context->getEventDispatcher();
$this->controller = $context->getController();
$this->request = $context->getRequest();
$this->options = array_merge(array('cache_key_use_vary_headers' => true, 'cache_key_use_host_name' => true), $options);
if (sfConfig::get('sf_web_debug')) {
$this->dispatcher->connect('view.cache.filter_content', array($this, 'decorateContentWithDebug'));
}
// empty configuration
$this->cacheConfig = array();
// cache instance
$this->cache = $cache;
// routing instance
$this->routing = $context->getRouting();
}
示例5: getRouteFromItem
/**
* extracts the sfRoute from the item if exists
*
* @param array $item
* @return mixed
*/
protected function getRouteFromItem(&$item)
{
$config = $this->context->getConfiguration();
$routing = $this->context->getRouting();
$routeName = $item['route'];
$routeName = self::replaceConstants($routeName);
$item['route'] = $routeName;
if (strpos($item['route'], '://') || strpos($item['route'], 'ww.') || strpos($item['route'], '#') !== false) {
return false;
} elseif (strpos($routeName, '/')) {
$config = $routing->parse($routeName);
return $config['_sf_route'];
} else {
$routeName = str_replace('@', '', $routeName);
if (strpos($routeName, '?')) {
$routeName = substr($routeName, 0, strpos($routeName, '?'));
}
$routes = $routing->getRoutes();
return isset($routes[$routeName]) ? $routes[$routeName] : false;
}
}
示例6: routeExists
/**
* Check if the supplied route exists
*
* @param string $route
* @param sfContext $context
*
* @return boolean
*/
public static function routeExists($route, sfContext $context)
{
try {
$context->getRouting()->generate($route);
return true;
} catch (Exception $e) {
return false;
}
}
示例7: getPathAfterLoggingIn
public function getPathAfterLoggingIn(sfContext $context)
{
$logger = Logger::getLogger('core.homepageservice');
$redirectToReferer = true;
$request = $context->getRequest();
$referer = $request->getReferer();
$host = $request->getHost();
// get base url: ie something like: http://host:port/symfony/web/index.php
$baseUrl = $request->getUriPrefix() . $request->getPathInfoPrefix();
if ($logger->isDebugEnabled()) {
$logger->debug("referer: {$referer}, host: {$host}, base url: {$baseUrl}");
}
if (strpos($referer, $this->loginPath)) {
// Check whether referer is login page
$redirectToReferer = false;
if ($logger->isDebugEnabled()) {
$logger->debug("referrer is the login page. Skipping redirect:" . $this->loginPath);
}
} elseif (strpos($referer, $this->validatePath)) {
// Check whether referer is validate action
$redirectToReferer = false;
if ($logger->isDebugEnabled()) {
$logger->debug("referrer is the validate action. Skipping redirect:" . $this->validatePath);
}
} else {
if (false === strpos($referer, $baseUrl)) {
// Check whether from same host
$redirectToReferer = false;
if ($logger->isDebugEnabled()) {
$logger->debug("referrer does not have same base url. Skipping redirect");
}
}
}
/*
* Try to get action and module, skip redirecting to referrer and show homepage if:
* 1) Action is not secure (probably a login related url we should not redirect to)
* 2) Action is not accessible to current user.
*/
if ($redirectToReferer) {
try {
$moduleAndAction = str_replace($baseUrl, '', $referer);
if ($logger->isDebugEnabled()) {
$logger->debug('referrer module and action: ' . $moduleAndAction);
}
$params = $context->getRouting()->parse($moduleAndAction);
if ($params && isset($params['module']) && isset($params['action'])) {
$moduleName = $params['module'];
$actionName = $params['action'];
if ($logger->isDebugEnabled()) {
$logger->debug("module: {$moduleName}, action: {$actionName}");
}
if ($context->getController()->actionExists($moduleName, $actionName)) {
$action = $context->getController()->getAction($moduleName, $actionName);
if ($action instanceof sfAction) {
if ($action->isSecure()) {
$permissions = UserRoleManagerFactory::getUserRoleManager()->getScreenPermissions($moduleName, $actionName);
if ($permissions instanceof ResourcePermission) {
if ($permissions->canRead()) {
return $referer;
}
} else {
$logger->debug("action does not exist");
}
} else {
$logger->debug("action is not secure");
}
} else {
$logger->debug("action not an instance of sfAction");
}
} else {
$logger->debug("action does not exist");
}
} else {
$logger->debug("referrer does not match a route");
}
} catch (Exception $e) {
$logger->warn('Error when trying to get referrer action: ' . $e);
}
}
return $this->getHomePagePath();
}
示例8: initialize
/**
* Initialize cache manager
*
* @param sfContext $context
* @param sfCache $taggingCache
* @param array $options
*
* @see sfViewCacheManager::initialize()
*/
public function initialize($context, sfCache $taggingCache, $options = array())
{
if (!$taggingCache instanceof sfTaggingCache) {
throw new InvalidArgumentException(sprintf('Cache "%s" is not instanceof sfTaggingCache', get_class($taggingCache)));
}
if (!sfConfig::get('sf_cache')) {
$taggingCache = new sfNoTaggingCache();
}
$this->setTaggingCache($taggingCache);
$this->cache = $this->getTaggingCache()->getCache();
$this->setEventDispatcher($context->getEventDispatcher());
$this->context = $context;
$this->controller = $context->getController();
$this->request = $context->getRequest();
$this->routing = $context->getRouting();
$this->setOptions(array_merge(array('cache_key_use_vary_headers' => true, 'cache_key_use_host_name' => true), $options));
if (sfConfig::get('sf_web_debug')) {
$this->getEventDispatcher()->connect('view.cache.filter_content', array($this, 'decorateContentWithDebug'));
}
// empty configuration
$this->cacheConfig = array();
}