本文整理汇总了PHP中CUrlManager::parseUrl方法的典型用法代码示例。如果您正苦于以下问题:PHP CUrlManager::parseUrl方法的具体用法?PHP CUrlManager::parseUrl怎么用?PHP CUrlManager::parseUrl使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CUrlManager
的用法示例。
在下文中一共展示了CUrlManager::parseUrl方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: parseUrl
public function parseUrl($request)
{
if (issetModule('seo') && $this->parseReady === false && oreInstall::isInstalled()) {
if (preg_match('#^([\\w-]+)#i', $request->pathInfo, $matches)) {
$activeLangs = Lang::getActiveLangs();
$arr = array();
foreach ($activeLangs as $lang) {
$arr[] = 'url_' . $lang . ' = :alias';
}
$condition = '(' . implode(' OR ', $arr) . ')';
$seo = SeoFriendlyUrl::model()->find(array('condition' => 'direct_url = 1 AND ' . $condition, 'params' => array('alias' => $matches[1])));
if ($seo !== null) {
foreach ($activeLangs as $lang) {
$field = 'url_' . $lang;
if ($seo->{$field} == $matches[1]) {
setLangCookie($lang);
Yii::app()->setLanguage($lang);
//$_GET['lang'] = $lang;
}
}
$_GET['url'] = $matches[1];
//$_GET['id'] = $seo->model_id;
//Yii::app()->controller->seo = $seo;
return 'infopages/main/view';
}
}
$this->parseReady = true;
}
return parent::parseUrl($request);
}
示例2: parseUrl
public function parseUrl($request)
{
$route = parent::parseUrl($request);
if (substr_count($route, '-') > 0) {
$route = lcfirst(str_replace(' ', '', ucwords(str_replace('-', ' ', $route))));
}
return $route;
}
示例3: parseUrl
public function parseUrl($pathInfo)
{
$result = parent::parseUrl($pathInfo);
$urlLanguage = Yii::app()->getRequest()->getParam('language');
if ($urlLanguage && in_array($urlLanguage, $this->supportedLanguages)) {
Yii::app()->setLanguage($urlLanguage);
}
return $result;
}
示例4: parseUrl
public function parseUrl($request)
{
$searchPaths = array($request->pathInfo);
// Also search for paths that end with the wildcard "*" (e.g. with news details)
if ($lastPathSeparatorPos = strrpos($request->pathInfo, '/')) {
$searchPaths[] = substr($request->pathInfo, 0, $lastPathSeparatorPos + 1) . '*';
}
$page = CmsPage::model()->findByAttributes(array('path' => $searchPaths));
if ($page !== null) {
return 'cms/page/default/id/' . $page->id;
}
return parent::parseUrl($request);
}
示例5: parseUrl
public function parseUrl($request)
{
$route = parent::parseUrl($request);
// Perform a 301 redirection if the current protocol
// does not match the expected protocol
$secureRoute = $this->isSecureRoute($route);
$sslRequest = $request->isSecureConnection;
if ($secureRoute !== $sslRequest) {
$hostInfo = $secureRoute ? $this->secureHostInfo : $this->hostInfo;
if (strpos($hostInfo, 'https') === 0 xor $sslRequest) {
$request->redirect($hostInfo . $request->url, true, 301);
}
}
return $route;
}
示例6: parseUrl
public function parseUrl($request)
{
$path = '/' . $request->pathInfo;
if (!empty($path)) {
$Content = Content::model()->findByAttributes(array('path' => $path));
}
if ($Content && $Content->id) {
$route = 'content/view/id/' . $Content->id;
$_GET['path'] = $Content->path;
//So that menu items become active
} else {
$route = parent::parseUrl($request);
}
return lcfirst(str_replace(' ', '', ucwords(str_replace('-', ' ', $route))));
}
示例7: parseUrl
/**
* Parses the user request.
* @param CHttpRequest $request The request application component.
* @return string The route (controllerID/actionID) and perhaps GET parameters in path format.
*/
public function parseUrl($request)
{
$route = $request->getQuery('r');
if (is_null($route)) {
$route = $request->getPathInfo();
}
$app = Yii::app()->getModule('herbie')->application;
try {
$path = $app['urlMatcher']->match($route);
} catch (Exception $ex) {
// Don't catch exception
}
if (!empty($path)) {
return 'herbie/page';
}
return parent::parseUrl($request);
}
示例8: parseUrl
/**
* Parses the user request.
* @param CHttpRequest $request the request application component
* @return string the route (controllerID/actionID) and perhaps GET parameters in path format.
*/
public function parseUrl($request)
{
$this->_currentUrl = parent::parseUrl($request);
if (isset($_GET['language']) && in_array($_GET['language'], $this->languages)) {
Yii::app()->language = $_GET['language'];
Yii::app()->user->setState('language', $_GET['language']);
} else {
if (Yii::app()->user->hasState('language')) {
Yii::app()->language = Yii::app()->user->getState('language');
} else {
if (isset(Yii::app()->request->cookies['language'])) {
Yii::app()->language = Yii::app()->request->cookies['language']->value;
}
}
}
return $this->_currentUrl;
}
示例9: parseUrl
public function parseUrl($request)
{
$route = parent::parseUrl($request);
// Set application language
$urlLanguage = Yii::app()->getRequest()->getParam('language');
if ($urlLanguage && in_array($urlLanguage, $this->supportedLanguages)) {
Yii::app()->setLanguage($urlLanguage);
}
// Perform a 301 redirection if the current protocol
// does not match the expected protocol
$secureRoute = $this->isSecureRoute($route);
$sslRequest = $request->isSecureConnection;
if ($secureRoute !== $sslRequest) {
$hostInfo = $secureRoute ? $this->secureHostInfo : $this->hostInfo;
if (strpos($hostInfo, 'https') === 0 xor $sslRequest) {
$request->redirect($hostInfo . $request->url, true, 301);
}
}
return $route;
}
示例10: parseUrl
/**
* Override the default implementation to return a routing object when passed a string instead of a request object.
* @param \CHttpRequest|string $url the request or string to parse
* @param string|null $verb the http verb to assume when parsing string urls
*
* @return array|bool|string false if the request or url could not be parsed, otherwise the route or routing object
*/
public function parseUrl($url, $verb = 'GET')
{
if (!is_string($url)) {
return parent::parseUrl($url);
}
$request = new Request();
$request->setRequestType($verb);
$request->setUrl($url);
$oldGET = $_GET;
$oldREQUEST = $_REQUEST;
$_GET = array();
$parsed = parent::parseUrl($request);
$params = $_GET;
$_GET = $oldGET;
$_REQUEST = $oldREQUEST;
if ($parsed === false) {
return false;
}
array_unshift($params, $parsed);
return $params;
}
示例11: parseUrl
public function parseUrl($request)
{
if ($this->getUrlFormat() === self::PATH_FORMAT) {
$rawPathInfo = urldecode($request->getPathInfo());
$this->pathInfo = $this->removeUrlSuffix($rawPathInfo, $this->urlSuffix);
// '<path:.*>.tpl' => ['Admin/default/template','.tpl'],
// '<route:.*>.js' => ['Admin/default/control','.js','passingOnly' => true],
// '<route:.*>' => 'Admin/default/index',
$matches = [];
if (preg_match('/(.*)app.js/', $this->pathInfo, $matches)) {
$_GET['isNg'] = true;
return $matches[1];
// return '/'.str_replace('.','/',$matches[1]);
}
return parent::parseUrl($request);
/** Merge URLs between rules defined in config file and CMS page's rules */
if (WORKFLOW_ID) {
//when preview mode, we load cache urls of site
//normal mode, we load cache urls of workflow
$isPreview = isset($_GET['preview']);
//check current page have enable AB testing
//if yes, load urls cache file from <site_id>.php file
if ($isPreview == false && app()->hasComponent('cmsManager')) {
$isPreview = Yii::app()->XService->run('Cms.PageUrl.isAbTesting', array('siteId' => app()->cmsManager->workflow['site_id'], 'url' => $pathInfo));
}
$this->_pageUrls = Yii::app()->XService->run('Cms.PageUrl.getCachedUrls', array('workflowId' => WORKFLOW_ID, 'preview' => $isPreview));
$this->_workflowId = WORKFLOW_ID;
$_pageUrls = array();
if (is_array($this->_pageUrls)) {
//redirect to default url with code 301
app()->XService->run('Cms.PageUrl.redirectToDefault', array('url' => $pathInfo));
if (Yii::app()->hasComponent('localeManager')) {
$pathInfo = Yii::app()->localeManager->processPathInfo($pathInfo);
}
// can add code to modify url like mod_rewirte
// ...
// end of "mod_rewrite"
/**
* No rule in config file and in CMS page rules matched with requested URL
* As the CMS page rules are pull from cached file, we assume that the cache
* file is old so we will try to search against the rules in DB and rebuild
* the cache file
*/
$notInKeys = array_keys($this->_pageUrls);
$workflow = app()->cmsManager->workflow;
$pageUrls = Yii::app()->XService->run('Cms.PageUrl.rebuildCacheUrls', array('workflow' => $workflow, 'ids' => $notInKeys));
$_pageUrls = $this->_pageUrls = CMap::mergeArray($this->_pageUrls, $pageUrls);
$event = new CmsUrlManagerEvent($this);
$event->rules =& $this->rules;
$event->workflowId = $this->_workflowId;
if ($this->hasEventHandler('onBeforeParseUrl')) {
$this->onBeforeParseUrl($event);
}
$_pageUrls = CMap::mergeArray($event->rules, $_pageUrls);
$matchedRoute = $this->parsePageUrlsToBaseUrl($_pageUrls, $request, $pathInfo, $rawPathInfo);
if (!empty($matchedRoute)) {
return $matchedRoute;
}
//$this->rules['/'] = 'Cms/default/index';
} else {
//we should throw an error but unfortunately, we cannot do that within UrlManager init()
//so we have to wait till parseUrl();
$this->_noUrlCacheError = true;
}
} else {
//we should throw an error but unfortunately, we cannot do that within UrlManager init()
//so we have to wait till parseUrl();
$this->_workflowLookupError = true;
}
// check and throw some error we supposed to throw on the init but cannot because of Yii
if ($this->_workflowLookupError === true) {
throw new CHttpException(404, 'This domain does not match with any configured domain(s).');
}
if ($this->_noUrlCacheError === true) {
throw new Exception('Workflow for the requested URL is not defined yet.');
}
// end of checking and throwing error
if ($this->useStrictParsing) {
throw new CHttpException(404, Yii::t('yii', 'Unable to resolve the request "{route}".', array('{route}' => $pathInfo)));
} else {
return $pathInfo;
}
} else {
if (isset($_GET[$this->routeVar])) {
$route = $_GET[$this->routeVar];
} else {
if (isset($_POST[$this->routeVar])) {
$route = $_POST[$this->routeVar];
} else {
$route = '';
}
}
}
return $route;
}
示例12: testParsingOnly
public function testParsingOnly()
{
$config = array('basePath' => dirname(__FILE__), 'components' => array('request' => array('class' => 'TestHttpRequest')));
$rules = array('(articles|article)/<id:\\d+>' => array('article/read', 'parsingOnly' => true), 'article/<id:\\d+>' => array('article/read', 'verb' => 'GET'));
$_SERVER['REQUEST_METHOD'] = 'GET';
$app = new TestApplication($config);
$app->request->baseUrl = null;
// reset so that it can be determined based on scriptUrl
$app->request->scriptUrl = '/apps/index.php';
$app->request->pathInfo = 'articles/123';
$um = new CUrlManager();
$um->urlFormat = 'path';
$um->rules = $rules;
$um->init($app);
$route = $um->parseUrl($app->request);
$this->assertEquals('article/read', $route);
$url = $um->createUrl('article/read', array('id' => 345));
$this->assertEquals('/apps/index.php/article/345', $url);
}
示例13: parseUrl
public function parseUrl($request)
{
$route = parent::parseUrl($request);
return lcfirst(str_replace(' ', '', ucwords(str_replace('-', ' ', $route))));
}
示例14: parseUrl
public function parseUrl($pathInfo)
{
$result = parent::parseUrl($pathInfo);
return $result;
}
示例15: testParseUrlWithGetFormat
public function testParseUrlWithGetFormat()
{
$config = array('basePath' => dirname(__FILE__), 'components' => array('request' => array('class' => 'TestHttpRequest', 'scriptUrl' => '/app/index.php')));
$entries = array(array('route' => 'article/read', 'name' => 'value'));
$app = new TestApplication($config);
$request = $app->request;
$um = new CUrlManager();
$um->urlFormat = 'get';
$um->routeVar = 'route';
$um->init($app);
foreach ($entries as $entry) {
$_GET = $entry;
$route = $um->parseUrl($request);
$this->assertEquals($entry['route'], $route);
$this->assertEquals($_GET, $entry);
}
}