Zend Framework için farklı url şeması

3 Cevap php

Bizim CMS için biz (bunu da aramak istiyorsanız site haritası) sitenin ağaç yapısını tanımlayan bir site yöneticisi var.

Olası bir url düğüm chris, sırayla dışarı-ekibinin bir çocuk geliştiriciler çocuk için ağaç yapısında Haritayı hangi www.example.com/our-team/developers/chris/ olduğunu.

Bütün bu yerde ve doktrininin harika uygulanan iç içe Set davranışı sayesinde çalışıyor. Tek şey, ben sitemizin ön sonunda çalışma almak için mücadele ediyorum olmasıdır. Varsayılan olarak Zend Framework isteği nesne denetleyicisi / eylem / anahtar / değer / anahtar / değer / ... URI şeması beklediğini ama bu oldukça benim ihtiyaçlarına uygun değil, ben bütün denetleyicisi, eylem ve anahtar kısmını atlamak ve kısıtlamak istiyorum değerleri. Value1/value2/value3/value4 / ... gibi bir şey

Herkes bunu gerçekleştirmek için nasıl bir fikri vardır?

Edit: Some more background: You probably wonder how i'm mapping the request to a controller/action? Well every request that isn't dispatchable (thus isn't an existing controller/action) is handled by the error controller, it is there where i match the request URI against a path in the tree structure and thus am able to display the page (if the path matches), if it doesn't match the error controller just continues and a 404 is responded.

3 Cevap

Ben Zend_Controller_Router_Route_Abstract sınıfını genişleterek yönlendirme gerçekleştirilir.

Yönlendirici yığını ekleyerek, birçok yolları kullanarak bir 'şelale' sistemini kullanmak mümkündür.

I published the code bloguma ve o kadar çalışıyor Bittarman önerdi.

Bu kullanım durumda standart modeline benzer olan controller/action/value kadar eşler. Özel rota belirlerken :controller/:action/:username gibi bir şey kullanın.

ZF için kılavuzda Using a Router bakın.

Öncelikle, ben yönlendirme sağlamak için hata kontrolörü kullanarak durdurmak istiyorum. Thats sadece düz kötü talih.

Şimdi böyle bir rota belirleme yapısı ile uğraşırken dikkate almanız gereken birkaç şey var, bir bu varsayılan yol ile çakışan, bu yüzden sizin ona dayanarak eğer, senin bunu nasıl sıkı olması için ihtiyacımız olacak.

Burada mevcut yaptık bilgi verilmedi, ben rota sınıf alt sınıfı öneririm, ve veritabanı karşı (önbelleğe) araması gerçekleştirmek, ve oradan doğru modül / denetleyici / eylem dönmek ve doğru eylem düz gitmek ilk yer.

Ayrıca daha sonra bir başka db araması, eylem gerekli değildir, böylece istek params (sayfa içeriği, ekip üyesi ayrıntıları vb) birlikte ilgili verileri geçmek ve eylem kod edebilirsiniz arama cruft ücretsiz eğer.