2010-11-18 3 views
6

나는 카테고리에 대한 링크를 추가하기위한 간단한 CRUD를 만들고 있습니다. 각 카테고리에는 ID가 있습니다. 특정 카테고리에 대한 모든 링크를 나열하는보기가 있습니다. 해당보기에서 나는 추가 양식에 대한 링크가 있습니다 :젠드 프레임 워크 URL보기 도우미는 기본적으로 "id"를 추가합니다.

http://example.com/link/add/categoryId/3 

현재 다음 구문을 사용하여보기에 해당 링크를 빌드합니다.

<?php echo $this->baseUrl();?>/link/add/categoryId/<?php echo $this->category['id']; ?> 

내가 생각 이는 URL보기 도우미를 사용하여 청소기 수행 할 수 있습니다.

<?php echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id'])); ?> 

그러나 그것은 나에게 다음과 같은 URL 추가 "ID/3"가 요식

http://example.com/link/add/id/3/categoryId/3 

을 제공합니다. URL보기 도우미의 코드를 읽었지만 완전히 이해하지 못했습니다. 어떻게 거기에 여분의 id/3가 있습니까?

감사합니다.

@Fge가 정답을주었습니다. 아래는 정확한 구문입니다. URL을 ViewHelper이 병합하고 현재 요청 매개 변수를 사용하여 지정된 파라미터를 무시 기본적으로

echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id']),null,true); 
+0

현재 요청에 'id'매개 변수가 있습니까? – Fge

+1

예, 특정 카테고리의 모든 링크를 나열하는보기가 있습니다. "특정 카테고리"에는 ID가 있습니다. URL은 http://example.com/category/view/id/3입니다. –

답변

9

. 귀하의 경우처럼 id 매개 변수. 모든 매개 변수를 재설정하려는 경우 당신은 viewhelper의 3 매개 변수를 사용해야합니다 : '재설정'

$this->url(array(), 'route'(= null to use the default), true); 

이 아닌 설정 매개 변수에 대한 자세한 내용은 "대체"로 현재 요청을 사용하지 않도록 viewhelper을 강제로 . 기본 동작은 현재 요청의 하나 또는 두 개의 매개 변수 (동작과 같음) 만 변경하고 모든 매개 변수를 설정하지 않으려는 경우 (또는 모두를 모르는 경우) 특히 유용합니다.

+0

감사합니다! 내 질문을 편집하여 원하는 URL을 얻는 데 사용한 전체 구문을 추가합니다. 기본값이되어서 이상한 행동이라고 생각하지 않습니까? –

+0

동작이 완벽하지 않습니다. 이렇게하면 많은 용도로 구문이 단축됩니다. 페이지 매김이있는 서버 측 정렬 가능 목록이 있다고 가정 해보십시오. 페이지 정렬과 정렬 가능한 헤더의 경우 $ this-> url ('order'=> 'ASC')을 사용해야합니다. 주문을 변경합니다. 페이지, 필터 등의 다른 모든 매개 변수는 그대로 유지됩니다. 보기에 전혀 신경 쓸 필요가 없습니다. – Fge

+0

실제로 완벽한 사용 사례입니다! –