https:/www.high-endrolex.com/40
https:/www.high-endrolex.com/40
https:/www.high-endrolex.com/40
Zend Framework’de Veritabanı ile Routing – BT Hayat
https:/www.high-endrolex.com/40

Zend Framework’de Veritabanı ile Routing

Zend’de routing listenizi -en azından bir kısmını- veritabanında tutmak istiyorsanız Bootstrap’da bu işi yapamıyorsunuz. Çünkü henüz bootstrap aşamasında veritabanına bağlanamıyorsunuz. Google’da aradım taradım, bazı öneriler gördüm ama çözemedim.

Routing işine girmeden önce, artık kullanılmayan URL’ler için ErrorController’da db taraması yapıp doğru linke 301 (Permanently Moved) hatası ile yönlendiriyordum.

$this->_helper->redirector->setCode(301);
$this->_redirect($yenilink);

Burada yönderme yapılıyor. Yani kullanıcı açısından tarayıcının url’i değişiyor. Ziyaretçi artık kullanmadığınız mesela http://falanca.com/filanca adresine girmek isterken siz onu http://falanca.com/yeniadres gibi bir adrese yönlendirmiş oluyorsunuz.Bu sırada 301 hatası verdiğiniz için aynı linke arama motorları da erişmek istediğinde 301 hatasını dikkate alıp arama sonuçlarını güncelleyebiliyorlar. O nedenle 301 önemli.

Routing’de ise işler daha farklı. Kullanıcının url olarak http://falanca.com/afilli-url gibi bir adresi tıklamasını istityorsunuz. Normalde böyle bir controller/action kümesi yok. O nedenle ErrorController’daki ErrorAction çalışacak, siz orada ‘EXCEPTION_NO_ACTION’ ile hatanın tipini yakaladıktan sonra taklanızı atıp bu adamın hangi controller/action’ı çağırmak istediğini afilli routing tablonuzdan kontrol edip o action’u çalıştıracaksınız. Kullanıcı bu transparan olayı farketmeyecek. Çünkü url değişmemiş olacak.

İşte bunun için yine ErrorController’da şu satırları kullanmak yeterli:

$request=$this->getRequest();					
$request->setControllerName('hedefcontroller');		
$request->setActionName('hedefaction');	
$request->setParam('id',$id]);
$request->setDispatched(false);

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

https:/www.high-endrolex.com/40
https:/www.high-endrolex.com/40