2014-11-10 7 views
2

Yii2 애플리케이션에서 클린 URL을 사용할 수있게 설정했지만 조치에 전달할 인수가없는 것 같습니다. (Yii2 URL 및 액션 매개 변수 삭제

AController-> actionB :

로컬 호스트/응용 프로그램/웹/A/B/C/D

다음에 매핑 :

나는이 기대 $ c, $ d)

그것은 일어나지 않습니다.

여기 내 htaccess로이다 :

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule . index.php 

내 web.php의 관련 부분 :

'urlManager' => [ 
       'class' => 'yii\web\UrlManager', 
       'enablePrettyUrl' => true, 
       'showScriptName' => false, 
       'rules' => array(
         '<controller:\w+>/<id:\d+>' => '<controller>/view', 
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
       ), 
     ], 

답변

0

당신이 URL 다음과 같은 기대합니다.

로컬 호스트/응용 프로그램/웹/A/B/C/

가 맵에 D 다음을 :

AController-> actionB의 ($ C, $ d 개)

당신이 주요 지정할 수 있습니다 .php 다음 예제와 같습니다.

아래 예제에서 언급 한 것처럼 URL 규칙을 설정해야합니다. 그것은 작동해야합니다.

'urlManager' => [ 
       'class' => 'yii\web\UrlManager', 
       'enablePrettyUrl' => true, 
       'showScriptName' => false, 
       'rules' => [ 
         '<controller:\w+>/<action:\w+>/<id:\d+>/<id:\d+>' => 'a/b/c/d' 
       ], 
     ], 

아직 검색어가 있으면 알려 주시기 바랍니다.

+0

안녕하세요, 비슷한 문제가 있습니다. 내가 귀하의 코드를 사용할 때 : 'preg_match() : 컴파일 실패 : 두 개의 명명 된 하위 패턴은 55'에서 동일한 이름을가집니다. ' 내가 변경했을 때 /에서 / 나는 다음을 가지고있다 : 'a/b/c/d "요청을 해결할 수 없음 – masteryoda

2

는 지금까지 내가 규칙 같은 것을 보일 것 이해 : 당신이 localhost/app/web/a/b/c/d에 액세스하려고한다면

'<controller:\w+>/<action:\w+>/<c>/<d>' => '<controller>/<action>' 

을 YII 호출됩니다

class AController extends Controller 
{ 
    public function actionB($c, $d) 
    { 
    } 
} 
0

을 나는에 대한 다음과 같은 규칙을 제안하여 urlManager :

'rules' => [ 
    '<a:\w+>/<b:\w+>/<c:\d+>/<d:\d+>' => 'a/b' 
], 

주소 지정 localhost/a/b/c/d은 이제 ac b 내부 컨트롤러 cd입니다.