2010-11-18 15 views
6

Bir kategoriye bağlantı eklemek için basit bir CRUD oluşturuyorum. Her kategorinin bir kimliği vardır. Belli bir kategori için tüm bağlantıları listeleyen bir görünüm var.Zend Framework Url Görünüm Yardımcısı varsayılan olarak "id" ekler

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

Şu anda aşağıdaki sözdizimini kullanarak görünümde bu bağlantıyı kurmak: Bu görünümde I eklenti forma bir bağlantı var.

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

bence bu URL Görünüm Yardımcısı'nı kullanarak daha temiz yapılabilir.

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

Ama bu beni bu adresi fazladan "id/3" vardır ..which

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

verir. Okudum, ancak Url View Yardımcısı'nın kodunu tam olarak anlamadım. Nasıl oluyor da fazladan bir kimlik var?

Teşekkürler!

@Fge aşağıda benim güncellenen tam sözdizimi, doğru yanıt verdi. URL ViewHelper birleştirir ve geçerli istek parametreleri ile verilen parametreler geçersiz kılar Varsayılan olarak

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

Geçerli isteğinizde 'id' parametresi var mı? – Fge

+1

Evet, belirli bir kategori için tüm bağlantıları listeleyen bir görünüm var. Bu "belirli kategoride" bir kimlik var, url http://example.com/category/view/id/3 –

cevap

9

. Senin örneğinde olduğu gibi id parametresi. Tüm parametreleri sıfırlamak istiyorsanız viewhelper 3. parametresini kullanmak zorunda: 'reset':

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

Bu not set parametreler için "son çare" olarak cari isteği kullanmamaya viewhelper zorlar . Varsayılan davranış, yalnızca geçerli isteğin (eylem gibi) bir veya iki parametresini değiştirmek, ancak tüm parametreleri ayarlamak istemiyorsanız (veya belki hepsini bile bilmiyorsanız) özellikle kullanışlıdır.

+0

Teşekkür ederiz! Sorduğumu, istediğim URL'yi almak için kullandığım tam sözdizimini eklemek üzere düzenleyeceğim. Bunun varsayılanlık için garip bir davranış olduğunu düşünmüyor musunuz? –

+0

Hiçbir davranış mükemmel değil. Bu, birçok kullanım için sözdizimini kısaltır. Sayfalama ile bir sunucu tarafı sıralanabilir listeniz olduğunu düşünün. Sayfalama ve sıralanabilir başlıklar için $ this-> url ('order' => 'ASC') kullanmak zorundasınız; siparişi değiştirmek için Sayfa, filtre vb. Gibi diğer tüm parametreler bozulmadan kalacaktır. Onları hiç umursamadan onlara bakmak zorunda değilsiniz :) – Fge

+0

Bu gerçekten için mükemmel kullanım durumudur! –