Nasıl anahtar / değer çiftlerini kullanmak için Zend Framework yönlendirme şema değiştirebilirim?

2 Cevap php

Aksine kullanarak daha controller/action/key1/value1/key2/value2 Benim URL olarak, ben kullanmak istiyorum controller/action/value1/value2. Benim Bootstrap sınıfta özel bir rota tanımlayarak bu yapabileceğini düşünüyorum ama benim tüm uygulama bu şekilde davranmasını istiyoruz, bu yüzden her eylem için özel bir yol ekleme söz konusu değildir.

Bu mümkün mü? Eğer öyleyse, nasıl olur o zaman erişim valueN? Ben eylem yöntemin imzadaki parametreleri tanımlamak mümkün olmak istiyorum. e.x.:

 // PostsController.php

 public function view($postID) {
      echo 'post ID: ' . $postID;
 }

Ben Zend Framework 1.9.3 kullanıyorum

Teşekkürler!

2 Cevap

Ben bunu sizin için yapacak bir özel yönlendirici yazabilirsiniz N değerleri (sabit numarası çalışır) izin vermek için geçerli router ile mümkün olduğunu sanmıyorum.

Ancak, bu yaklaşım, soru ve aslında tüm yolların liste uzun sürmez ve uzun vadede daha kolay olacağını öneririm. Eğer önerilen ettik olarak tasarlanmış bir rota adlandırılmış parametreleri ya aynı sırayla her zaman, yani demek olur

/controller/action/id/title/colour

ya onlar neredeyse anonim

/controller/action/value1/value2/value3

Kodu gibi olan

$this->getRequest()->getParam('value2'); //fairly meaningless

O N olmak zorunda mı ya da bazı sonlu değer diyebilirim? Örneğin size 5 params demek daha fazla ihtiyaç asla hayal edebilir? Eğer öyleyse bir rota ayarlayabilirsiniz:

 /:controller/:action/:param0/:param1/:param2/:param3/:param4

Hangi her eylem için tüm 5 params belirtmek yoksa bile işe yarayacaktır. Rota üzerine paramN: Hiç bir yerde 6 gerekiyorsa sadece başka / ekleyebilirsiniz.

Ben daha önce birlikte çalıştığım başka bir çözüm REQUEST_URI ayrıştırır ve dispatchLoopStartup () yöntemi isteği nesne tüm ekstra params koyar bir eklenti yazmak için. Params nereden geliyor onu daha belirgin yapar gibi ben daha ilk yöntem gibi.