Zend çerçevede yönlendirme ve ileri arasındaki fark nedir

6 Cevap php

Zend çerçevede yönlendirme ve ileri arasındaki fark nedir?

Biz redircet kullanmanız gerekir ve ne zaman ileri ne zaman kullanmalıyım?

6 Cevap

Başka bir denetleyici eylem _forward() sadece forwards herşey, _redirect() yeni bir HTTP isteği oluşturmak ve onunla bütün gönderme sürecinden geçmesi, yani bir başlık gönderirken.

Örneğin, yukarı ararsanız http://example.com/foo/bar Eğer foo denetleyicisi ve bar eylemi çağırır. Eğer öne baz eylem bar eylem içinde, örneğin bir yönlendirme yaparken, ZF http://example.com/foo/baz yüklemek için tarayıcıyı talimat olur ise aynı isteği dahilinde, tarayıcı hala, aynı URL olurdu.

Esasen, _forward() yapar

$request->setActionName($action)
        ->setDispatched(false);

_redirect() yapar iken

$this->_helper->redirector->gotoUrl($url, $options);

Ben form verilerini yineden sonuçlanan bir sayfayı yeniden engellemek istediğimde genellikle yönlendirir yok.

Bu bakınız:

Eğer ofiste bir telefon almak düşünün. Birisi satış konuşmak istiyor. Eğer "123456 arayınız" ve asmak derseniz, bu redirect. Eğer "bir dakika bekleyin" demek ve sadece onlara çağrı aktarırsanız, bu forward. ;)

Sen _forward() Eğer URL aynı kalmak isteyen durumlar için kullanmak - beware, iki kez denir ne olursa olsun temel denetleyicisi sınıf kullanmakta olduğunuz anlamına gelmez ama.

Bu açık veya önemsiz görünebilir, ancak akılda tutulması değilse, gerçekten akışının sezgisel anlayış tek bir isteği bir denetleyici örneği çağıran olduğunu göz önüne alındığında, uygulama tasarımı berbat edebilirsiniz. Örneğin o have static olarak ilan edilmesi için istek-kapsam singletons anlamına gelir, ya da _forward() onları kıracak.

Bir ileri, sadece "ileri" dahili farklı bir denetleyici eylem isteği ancak URL'yi devam ederken ben, bir yönlendirme geri yeni bir URL ile tarayıcıya bir 301/302 gönderir olduğunu tahmin ediyorum böylece aynı tarayıcı herhangi bir farklı bilmiyor .

1-yönlendirme başlığı ile yeni bir yanıt () bilgi [Bulundu 302 veya 301 == Kalıcı olarak taşındı] ve onun tekrar gönderme döngüsü alacak oluşturmak

2-ileri değişim yeniden olmadan bu yeni isteğine yürütme akışı yeniden sevk işlemi girin

Yönlendirme eylemi Geçerli sayfayı süreci biter ve başka yönlendirir. Tarayıcı yeniden yönlendirme aldığı gibi tüm bağlam (yeni denetleyici / eylem) değişecektir. Bu, yeni bir URL'ye bağlanıyor

Ileri aynı sayfada kalacak, ancak değişmeden bağlamını bırakacaktır Oysa. Sen bir işlev çağrısı olarak görebilirsiniz. Sizin views zamanki gibi yüklenir.