Zend Framework 1 – Router

Merhabalar bu makalede Zend Router’ı anlatmaya çalışacağım 🙂

Zend Framework’de url yapısını ilgili dosyaya aktaran componentin adı “router” dır, Zend_Controller içerisinde yer alır bknz. www.localhost.com/:controller/:action . Belirli, özel url yapısı oluşturmak oldukça kolay. Zend’in kendi sitesinden ilgili dökümana uluşabilirsiniz;

Bootstrap.php’de methodumuzu oluşturuyoruz;

İşte bu kadar sınıfımızı örnekledik, metodumuzu çağırdık SEO dostu url yapısı oluşturmaya başlayabiliriz. UserController’imiz olsun, kullanıcı bilgilerinin görüntüleneceği bir sayfamız olması içinde showAction metodumuz olsun. Normalde url yapımızı şu şekilde oluşturuyorduk; www.localhost.com/user/show/uye/johntravolta.

Url yapısını www.localhost.com/user/johntravolta şeklinde göstermek için ;

Burada dikkat etmeniz gereken nokta $router->addRoute’de ilk parametrede tanımladığımız user router’ı, oluşturacağımız diğer routerlarıda da varsayarsak benzersiz yani uniq olmak zorunda ve routerın ismi controller ile aynı olmak zorunda değil isterseniz aliayse olarak belirleyin hiç farketmez, yani bu şekilde de yapabilirsiniz;

showAction içerisinde kullanıcının adını $this->getRequest()->getParam(‘username’); ile elde ediyoruz. Router’de :id olarak belirleseydik getParam(‘id’); olarak parametreyi elde edecektik.

Zend Route Regular Expression

Zend Framework’de daha spesifik url yapısı oluşturabilmek içinse regEx kullanacağız. Url yapımız http://localhost.com/blog/archive/01-Zend-framework-disable-render.html olsun, routerımızda şu şekilde olacak;

www.localhost.com/3939-some-title-here şeklinde bir url yapısı elde etmek içinse

Elimden geldiğince anlatmaya çalıştım bu makalede buraya kadar 🙂 Görüşmek üzere CYA !

Not : Zend Router kullandığınız yapıda Zend_Paginate ile sayfalama yaptığınızda sıkıntı çıkarmaktadır ( bknz. $this->url() ). Zend içerisinde bazı Çözümler denediysem’de başarılı olamadım. Kendi çözümüm ise birazcık işin kolay tarafına kaçmak (bknz. request_uri) 🙂

* Edit : 5 Aralık itibari Zend Router ile Zend Paginate kütüphanesini kullandığım sayfada yaşadığım url problemini tam olarak çözdüm 🙂