2014-04-27 2 views
0

저는 젠드 프레임 워크와 프로필 기반 웹 사이트를 만들고 있습니다. 프로필 URL을 만들 때 나는 멈추었습니다. 요구 사항 같은 것입니다 :젠드 프레임 워크 2에서 루트 URL 만들기

http[:]//abc.com/myprofileurl 

나는 젠드하는 새로운 그리고 난 그냥 젠드 프레임 워크, URL 규칙이

http[:]//domain.com/controller/action/params 

것을 알고하지만 컨트롤러의 위치에 프로파일 이름을 올려 놓을 필요가있다.

그래서이 사람들을 도와주세요. 인터넷을 통해 솔루션을 검색하는 데 이미 4 시간을 소비했지만 아무것도 찾을 수 없습니다. 사전에

덕분에

+1

내 퀵 스타트를 다시 읽어보십시오. [제 5 장 - 라우팅 이해] (https : // github.com/manuakasam/ZF2_3_QuickStart_Rewrite/pull/12/files) – Sam

답변

0

나는 내 자신을 실험하여 해결책을 얻었다.

나는 "사용자"라는 이름의 모듈을 만든 다음 "프로필"라는 이름의 컨트롤러를 생성하고 다음과 같이 사용자 모듈 내부 module.config.php에 경로를 추가했습니다

'router' => array(
    'routes' => array(

     // other routes configs here 

     'profile' => array(
      'type' => 'Segment', 
      'options' => array(
       'route' => '/:username', 
       'constraints' => array(
        'username' => '[\w-.]+', 
       ), 
       'defaults' => array(
        '__NAMESPACE__' => 'User\Controller', 
        'controller' => 'Profile', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
      ), 
     ), 
    ), 
), 

이 정확히 무엇을 작동 내가 원하는 : P

http[:]//mydomain.com/myusername 

감사들!

0

I 조언 당신은 규칙의 충돌을 피하기 위해 URL을 일부 식별 값을 추가 할 수 있습니다. 예를 들어 user '/ login', 'user/logout', 'user/register', 'user/change-password'등의 접두어 'user'아래 관련된 모든 'user' zfcuser 모듈에서 사용됨).

우리는/user/profile/: user와 같은 url을 만들 것입니다. 여기서 : user 부분은 url의 동적 부분입니다. UserController로 응답합니다 응용 프로그램을 config (설정)이 경로를 사용하여

'router' => array(
    'routes' => array(

     // other routes configs here 

     'user' => array(
      'type' => 'Literal', 
      'priority' => 1000, 
      'options' => array(
       'route' => '/user', 
       'defaults' => array(
        '__NAMESPACE__' => 'Application\Controller', 
        'controller' => 'User', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'profile' => array(
        'type' => 'Segment', 
        'options' => array(
         'route' => '/profile/:user', 
         'defaults' => array(
          'action'  => 'profile', 
         ), 
        ), 
       ), 
      ), 
     ), 

(이름이 다른 경우 코드가 아래에 변경이 필요합니다)

는 당신이 응용 프로그램 모듈에서 작업하는 가정하고 작성하고 UserController을 등록 :: url/user가 호출 될 때의 인덱스. /user/profile/someuser가 호출 될 때 UserController :: profile로 응답합니다.

우리가 규칙에서 말했기 때문에 someuser 부분은 필수 항목입니다.

$this->params()->fromRoute('user') 

에 따라 같은이 단지 당신이 할 수있는 솔루션 중 하나 인 사용자 값 : 그렇지 필수하려면 우리는 같은 규칙이 당신을 취할 수있는 UserController의 프로필 작업

'route' => '/profile/[:user]', 

에 따라 작성해야 예를 들어, 다음과 같은 자녀 경로없이 규칙을 작성할 수 있습니다.

'user' => array(
     'type' => 'Segment', 
      'options' => array(
       'route' => '/user/profile/:user', 
       'defaults' => array(
        '__NAMESPACE__' => 'Application\Controller', 
        'controller' => 'User', 
        'action'  => 'profile', 
      ), 
     ), 
    ), 

귀하의 요구에 맞는 솔루션을 선택하는 것은 귀하의 책임입니다. ZF2 official routing documentation도 읽으십시오.

+0

감사합니다 @Sergio,이 규칙을 알고 있지만 클라이언트는 내가 언급 한 것처럼 도메인의 루트에 사용자 이름이 필요합니다. –

+0

'/ user/profile'부분을 제거하고 사용자의 사용자 이름에 따라 비용을 추가하는 것입니다. –

관련 문제