2010-11-18 4 views
6

Tôi đang tạo CRUD đơn giản để thêm liên kết vào danh mục. Mỗi loại có một id. Tôi có chế độ xem liệt kê tất cả các liên kết cho một danh mục nhất định. Trong chế độ xem đó, tôi có liên kết đến biểu mẫu bổ sung là:Zend Framework Url View Helper thêm "id" theo mặc định

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

Tôi hiện đang xây dựng liên kết đó trong chế độ xem sử dụng cú pháp sau.

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

tôi nghĩ này có thể được thực hiện bằng cách sử dụng trình dọn dẹp các Url Xem Helper.

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

Nhưng điều đó mang lại cho tôi url sau

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

đồi khế, đồi có thêm "id/3". Tôi đã đọc nhưng không hiểu đầy đủ mã của Trình trợ giúp chế độ xem Url. Làm thế nào có thêm một id/3 trong đó?

Cảm ơn!

@Fge đưa ra câu trả lời đúng, dưới đây là cú pháp hoàn chỉnh được cập nhật của tôi.

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

Có bất kỳ thông số 'id' nào trong yêu cầu hiện tại của bạn không? – Fge

+1

Có, tôi có chế độ xem liệt kê tất cả các liên kết cho một danh mục nhất định. "Danh mục nhất định" có id, url là http://example.com/category/view/id/3 –

Trả lời

9

Theo mặc định, Url ViewHelper hợp nhất và ghi đè các tham số đã cho với thông số yêu cầu hiện tại. Giống như trong trường hợp của bạn tham số id. Nếu bạn muốn đặt lại tất cả các thông số, bạn phải sử dụng tham số thứ 3 của viewhelper: 'reset':

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

Điều này sẽ buộc các viewhelper không sử dụng các yêu cầu hiện tại là "dự phòng" cho không thiết lập các thông số . Hành vi mặc định đặc biệt hữu ích nếu bạn chỉ muốn thay đổi một hoặc hai tham số của yêu cầu hiện tại (như hành động) nhưng không muốn đặt tất cả các tham số (hoặc có thể bạn thậm chí không biết tất cả).

+0

Cảm ơn! Tôi sẽ chỉnh sửa câu hỏi của mình để thêm cú pháp đầy đủ mà tôi đã sử dụng để lấy URL mà tôi muốn. Bạn không nghĩ rằng đây là loại hành vi kỳ lạ là mặc định? –

+0

Không có hành vi nào là hoàn hảo. Điều này rút ngắn cú pháp cho nhiều công dụng. Hãy tưởng tượng bạn có một danh sách sắp xếp phía máy chủ với phân trang. Đối với trang và các tiêu đề có thể sắp xếp, bạn chỉ phải sử dụng $ this-> url ('order' => 'ASC'); để thay đổi thứ tự. Tất cả các thông số khác như trang, bộ lọc, v.v ... sẽ vẫn nguyên vẹn. Bạn không cần phải quan tâm đến chúng ở tất cả trong quan điểm của bạn :) – Fge

+0

Đó là trường hợp sử dụng hoàn hảo cho nó thực sự! –