2008-08-29 6 views

답변

7

당신의 목표는 응용 프로그램을 통해 사용자 친화적 인 URL이 다음과 같은 방식 사용하는 경우 :

1) 응용 프로그램의 routing.yml 파일에 모듈/액션을위한 라우팅 규칙을 작성합니다. 다음의 예는 (호출기 사용) 1 페이지에 디폴트 응용 프로그램에서 가장 최근의 질문에 보여주는 행동의 라우팅 규칙입니다 :

recent_questions: 
    url: questions/recent/:page 
    param: { module: questions, action: recent, page: 1 } 

2) 라우팅 규칙이 설정되면을의 url_for() 도우미를 사용 서식 파일에서 보내는 URL 서식을 지정할 수 있습니다.

<a href="<?php echo url_for('questions/recent?page=1') ?>">Recent Questions</a> 

이 예에서는 다음 URL이 생성됩니다 : http://myapp/questions/recent/1.html.

3) 들어오는 URL (요청)은 라우팅 시스템에서 분석되며, 라우팅 규칙 구성에서 일치하는 패턴이 발견되면 이름의 와일드 카드 (예 : :/page 부분)가 요청 매개 변수가됩니다.

link_to() 도우미를 사용하여 HTML <a> 태그를 사용하지 않고 URL을 출력 할 수도 있습니다. 당신이 실제로 해당 URL과 쿼리 문자열을 원하는 경우

+0

응용 프로그램이 그렇게 구성되어 있지 않으면 (기본적으로 그렇지 않은 경우) URL이 .html 부분으로 생성되지 않습니다. –

1

이 조언은 심포니 1.0을위한 것입니다. 그것은 아마도 이후 버전에서 작동 할 것입니다. 당신의 sfAction 클래스 내

:

문자열 genUrl ($ 매개 변수 = 배열 ​​(), $ 절대 = false)를

예. $ this-> getController() -> genUrl ('yourmodule/youraction? key = value & key2 = value', true); 템플릿에서

는 :

이것은 정상적인 링크를 생성합니다.

문자열 link_to ($ name, $ internal_uri, $ options = array());

예 : link_to ('내 링크 이름', 'yourmodule/youraction? key = value & key2 = value');

0

또한,이를 사용

link_to('My link name', 'yourmodule/youraction?key=value&key2=value',array('query_string'=>'page=2')); 

그렇지 않으면,이 URL의 한 부분으로 경로를 시도하고 가능성이 조치를 깰거야.

0

먼저 규칙을 정의하지 않고 URL을 직접 생성 할 수 있습니다.당신이 템플릿에 URL을 생성 할 경우

$this->generateUrl('default', array('module'=>'[ModuleName]','action'=>'[ActionName]')) 

, 당신이 사용할 수있는 url_for() 도우미 : 당신이 행동에 URL을 생성 할 경우

, 당신은 generateUrl() 도우미를 사용할 수 있습니다 :

url_for('[ModuleName]/[ActionName]', $absolute) 

$ true/false로 설정하고 표시하지 않으려면 echo를 사용하지 마십시오.

그러나 당신이 링크 (<a href=""></a> 같은), LINK_TO을 할 경우() 도우미는 할 것입니다.

관련 문제