Zend çerçevesinde formu yeniden önleyin?

4 Cevap php

Bir kontrol içindeki bir eylem veritabanından sonraki id oluşturur ve referans olarak ekranda gösterir. Nasıl kullanıcı tıkladığında yenileyin eylem tekrar çağırdı önleyebilirsiniz.

4 Cevap

Zend Framework ile post-yönlendirme-olsun desen genellikle boş formun eylemi bırakarak içerecektir (yani kendisi nakleder) ve sonra (yani başarısı üzerine) tekrar formunu görüntülemek için istemiyorsanız yönlendirme.

public function newAction() {
    $form = new Form_Foo();
    if($this->_request->isPost()) {
        if($form->isValid($this->_request->getPost()) {
            //save or whatever
            return $this->_redirect('path/to/success');
        }
        // else fall through
    }
    $this->view->form = $form;
}

Eğer bir 302 yönlendirmesi uygulayarak yapabilirsiniz

header('HTTP/1.1 302 Found');
header('Location: displayId.php?id=5');
die();

Eğer bu sayfaları var varsayarsak

  • form.php
  • processForm.php
  • displayId.php

Form.php only displays form and sends data via POST to processForm.php. Within processForm.php you can parse data and issue the redirect to displayId.php with id you want to display in GET parameter.

Kullanıcı sayfası (displayId.php) form veri yeniler bu şekilde tekrar işlenmez.

Bu yaşlı sonrası insanlar hala cevaplar için buraya gelip, bu yüzden bana biraz daha yardımcı olalım olmasına rağmen.

Formu yeniden yönlendirerek büyük ve yararlı ama biz hala geri düğme tıklayarak ve bu şekilde resubmitting gelen peple engelliyor değildir.

The solution is to either show the form as popup and make it disapear when done (easily done with jquery) or generate unique id for each transaction and checking if id was previously used. See article: http://www.boutell.com/newfaq/creating/stoprefresh.html

Umarım yardımcı olur.

Ben Zend Framework bunun için çalışıyoruz ama ben sadece aynı işlevsellikten sonra olduğumu söylediğimi biliyorum. Sadece ZF her şeyi taşındı ve ben bu işlevsellik yerleşik olmadığını görmek oldukça hayal kırıklığına uğrattı

Ben her bir form tüm GET, POST istekleri işlenir ve daha sonra (hata ve başarı mesajları gibi) sonuçları kaydedilir ve yeni yere sizi yönlendirildi hangi process.php göndermek için kullanılır.

$ _SESSION ['Post_data'] set olsaydı, ben _POST = $ _SESSION ['post_data'] $ olacaktı; ve sonra oturumu çıkarın.

Bu harika çalıştı ama şimdi ben ZF de aynı ihtiyaç kulüpler: Buda ne demek oluyor .. Dediğim gibi ... biraz hayal kırıklığına ben HERKES verileri resubmitting hakkında soran görünmesi için bir diyalog istediğini inanmıyorum D sizin enduser? hiçbir şey!