1
URL에 API 버전을 관리하기 위해 parseUrl을 구현하려고하는 Yii와 Im의 새로운 기능입니다. /api/1.0/ ...을 컨트롤러 apiV1.0으로 리디렉션하고 싶습니다.Yii Api 버전 urlManager/parseUrl
Main.php (urlManager 규칙) :
이...
array('class' => 'application.components.ApiVersion'),
...
가 ApiVersion.php :
<?php
class ApiVersion extends CBaseUrlRule
{
public $connectionID = 'db';
public function createUrl($manager,$route,$params,$ampersand)
{
if ($route==='car/index')
{
if (isset($params['manufacturer'], $params['model']))
return $params['manufacturer'] . '/' . $params['model'];
else if (isset($params['manufacturer']))
return $params['manufacturer'];
}
return false; // this rule does not apply
}
public function parseUrl($manager,$request,$pathInfo,$rawPathInfo)
{
if (preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches))
$url = $match[1] . $match[2]; // BUILD YOUR URL (controllerName/actionName)
$this->redirect(array($url));
}
return false;
}
}
임 매우 작동 방법과 손실, 누군가가 나를 도울 수 있을까? 경로가 "API/num_of_version/your_model/an_id"그래서
귀하의 URL이이 상태에있는이 일치하는 경우, 당신은 GET을 설정해야합니다 같은이 정규식 체크하면 함수에서
안녕하세요. 여전히 작동하지 않는데, 나는 createUrl 함수에서 무엇을해야합니까? –
첫 번째 글을 편집했습니다. –
편집시 createUrl 및 parseUrl이 모두 수행해야하는 작업에 맞지 않습니다! U는 문서에서 가져온 것뿐입니다! – darkheir