2016-09-05 2 views
1

yii \ rest \ UrlRule 컨트롤러의 동작에 대한 규칙을 다시 작성할 수있는 방법으로 확장하는 방법은 무엇입니까? 예를 들어 다음과 같은 URI를 생성하려고합니다.Yii2 레귤러 컨트롤러를위한 나머지 URL 라우팅

/user/[username] 
/user/keywords 
/user/keyword/[key1]/[key2]/[...] 
... 

위의 모든 동작은 고유 한보기도 렌더링합니다.

답변

0

yii\rest\UrlRule을 확장 할 필요가 없습니다. 단지 UrlManager 경로에 규칙을 추가하면 extraPatterns 속성이 yii\rest\UrlRule이됩니다. 예를 들어

당신은 컨트롤러에 list 조치를 정의한다고 가정

class BarController extends Controller 
{ 
    public $modelClass = 'app\models\Foo'; 

    public function actionList() 
    { 
     return ['id' => 1]; 
    } 
} 

그런 다음 구성 파일에 추가 경로를 추가 :

<?php 
// some configs are here 
'urlManager' => [ 
    'class' => 'yii\web\UrlManager', 
    'enablePrettyUrl' => true, 
    'enableStrictParsing' => true, 
    'showScriptName' => false, 
    'rules' => [ 
     [ 
      'class' => 'yii\rest\UrlRule', 
      'controller' => [ 
       'v1/bar', 
      ], 
      'extraPatterns' => [ 
       'GET list' => 'list', 
      ], 
     ], 
    ], 
], 
// and some other configs are here 

지금 당신이 /v1/bars/list와 API를 찾아 볼 수 있습니다. 더 많은 예제는 Yii2 Documentations을 참조하십시오.

+0

내 경우에는 작동하지 않습니다. 사실, 난 그냥 휴식과 같은 내 URL을 아름답게하고 출력을 나타 내기 위해 ActiveController 대신 일반 컨트롤러를 사용하고 싶습니다. –

+0

무엇이 문제입니까? 'ActiveController'는'Controller'에서 확장되어 모든 부모 동작을 갖습니다. – meysam