Symfony PHP에서 친숙한 URL을 어떻게 생성합니까?
문제
나는 항상 이러한 내장 기능을 잊어버리는 경향이 있습니다. 심포니 링크를 만드는 기능.
해결책
애플리케이션 전체에서 사용자 친화적인 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을 사용하지 않고 URL을 출력하는 도우미 <a>
꼬리표.
다른 팁
이 조언은 Symfony 1.0에 대한 것입니다.아마도 이후 버전에서는 작동할 것입니다.
sfAction 클래스 내에서:
문자열 genUrl($parameters = array(), $absolute = false)
예.$this->getController()->genUrl('yourmodule/youraction?key=value&key2=value', true);
템플릿에서:
그러면 일반 링크가 생성됩니다.
string link_to($name, $internal_uri, $options = array());
예.link_to('내 링크 이름', 'yourmodule/youraction?key=value&key2=value');
또한 해당 URL이 포함된 쿼리 문자열을 실제로 원하는 경우 다음을 사용합니다.
link_to('My link name', 'yourmodule/youraction?key=value&key2=value',array('query_string'=>'page=2'));
그렇지 않으면 URL의 일부로 라우팅하려고 시도하여 작업이 중단될 수 있습니다.
먼저 규칙을 정의하지 않고도 URL을 직접 생성할 수 있습니다.
작업에서 URL을 생성하려면 다음을 사용할 수 있습니다. 생성Url() 돕는 사람:
$this->generateUrl('default', array('module'=>'[ModuleName]','action'=>'[ActionName]'))
템플릿에서 URL을 생성하려면 다음을 사용할 수 있습니다. url_for() 돕는 사람:
url_for('[ModuleName]/[ActionName]', $absolute)
$absolute를 true/false로 설정하고, 표시하려면 echo를 사용하는 것을 잊지 마세요.
하지만 만들고 싶다면 링크 (뭔가 <a href=""></a>
), 다음으로 연결() 도우미가 할게.