2017-02-17 1 views
0

TWIG 템플릿이있는 Silex 응용 프로그램을 사용하는 프레임 워크 (특히 EC-Cube3)를 사용하고 있습니다.두 개의 매개 변수를 하나씩 TWIG url에 전달하십시오.

PHP 개체 배열로 구성된 탐색 사이드 바가 있습니다.

$app->match('/item', 'Controller::method')->bind('named_url'); 

프레임 워크는 결국 url 필드를 사용하고과 같이 나뭇 가지에 평가 : URL은 전형적인 렉스 방식으로 만들어

$item = array(
    "id" => "item_id" 
    "url" => "named_url" 
); 

: 나는 이런 식으로 뭔가를 보이는 항목 배열을 삽입 할 수 :

{{ url(item.url) }}

그리고 이것은 일반적으로 괜찮습니다! 나뭇 가지의 url 함수는 두 번째 인수에 대한 id이 필요하기 때문에 작동하지 않습니다 같은 배열로 URL을 설정,이 시나리오에서는

$app->match('/item/{id}', 'Controller::method')->bind('named_url'); // Needs 'id' to be evaluated. 

: 나는이 같은 매개 변수를 포함하는 URL이있을 때 그러나 문제는 온다 .

응용 프로그램의 TWIG 파일을 변경할 수 없으므로 (응용 프로그램을 안전하게 업데이트 할 수 없기 때문에) id을 포함하도록 항목의 url을 설정할 수 있어야합니다.

조사한 결과 이것이 가능하지 않다고 생각합니다. 이것이 불가능하다는 것이 사실입니까? 아니면 내가 모르는 몇 가지 방법이 있습니까?

답변

0

당신은 당신의 나뭇 가지 파일에 다음을 시도 할 수

{{ url(item.url,{'id': id}) }} 

내가 그 일을해야 생각하지만, 확실하지.


편집 # 2

당신이 이런 걸 사용하는 경우 :. $id은 당신이 통과하는 데 필요한 ID가

$app->match('/item', 'Controller::method($id)')->bind('named_url'); 

가 아니에요 렉스 정말 잘 알고,하지만 어쩌면 그게 뭔가?

+0

같은 것이 있습니다. 나뭇 가지 파일을 편집 할 수 없습니다. PHP 배열 만 편집 할 수 있습니다. – ABeard89

+0

제 EDIT # 2 변경 사항을 참조하십시오. –

+0

그것은 확실히 흥미 롭습니다. 나는 상자 밖에서 생각하는 것을 좋아한다. 경로에서'id '를 제거하면 TWIG가 URL을 해석 할 수는 있지만 라우트에서 변수의 유연성을 잃을 수 있습니다. 단순히 '/ item'의 단일 URL 만 일치시킬 수 있으며 '/ item/3'과 같은 다른 URL은 더 이상 일치하지 않습니다. Silex는 이와 같은 URL을 컨트롤러 메소드에 연결할 수 없습니다. – ABeard89

0

당신은 라우터 파일에 있어야합니다이

{{ path('path_in_route', {'id': article.id,'slug': article.slug}) }}

그리고 path_in_route 같이하여 여러개의 바르를 사용할 수 있습니다.

호프가 도움이됩니다.

+0

나뭇 가지 파일을 편집하여 쉽게 할 수 있지만 할 수는 없습니다. PHP 배열 만 편집 할 수 있습니다. – ABeard89

관련 문제