Bir form doğrulama CakePKP'deki başarısız sonra nasıl parametreleri korumak mı?

3 Cevap php

Ben imzalar çeşitli organizasyonlar oluşturmak izler bir uygulama oluşturma. Ben bir kimlik geçmek basit bir form var, bu yüzden otomatik olarak doğru organizasyon seçecektir. Add URL bu gibi görünüyor:

/signatures/add/3

Form iyi çalışıyor. Benim görüşüme göre ben çünkü 3 ya da herhangi başka bir kimlik geçirerek, otomatik, sağ alan seçer:

echo $form->input('organization_id', array('selected' => $this->passedArgs));

Kullanıcı bir form öğesi doldurmak için unutuyor zaman benim sorun haline çalıştırmak. Form için kullanıcı döndürür:

/signatures/add/

Yani seçilen doğru organizasyon yok. Bu 1 varsayılan döner. Benim parametreleri tutabilen konusunda herhangi bir ipucu?

3 Cevap

/ Ben pasta hakkında çok şey bilmiyorum ama / imzaları / eklemek olduğu formun eylem gibi görünüyor

Bu eylem okur böylece form eylemi id eklerseniz = "imzalar eklemek / / {ID}" görünümünde geri olduğunu organizasyonlar sayfa gitmeli

Teşekkürler Galen. Aslında bana doğru yönde işaret etti. Benim form örgütün durumunu kaydetmek istediğini anladım, ama ben yaptım ben bunu over-yazdı:

echo $form->input('organization_id', array('selected' => $this->passedArgs));

Peki ben şimdi ne onun yerine:

if (!empty($this->passedArgs)) {
    		echo $form->input('organization_id', array('selected' => $this->passedArgs));
    	} else {
    		echo $form->input('organization_id');
    	}

Ve bu hile yok.

Seçilen değere organization_id ayarlamak için doğru yolu denetleyicisi veri dizisindeki eklemektir. Örn

function add($organization_id)
  if(!empty($this->data)) {
    if($this->Signature->save($this->data)) {
      $this->setFlash('Save successful')
      $this->redirect(array('action' => 'index'))
    } else {
      $this->setFlash('Please review the form for errors')
    }
  }

  if($organization_id) {
    $this->data['Signature']['organization_id'] = $organization_id;
  }
}

Sonra görünümünde sadece koymak

echo $form->create('Signature', array('action' => 'add'))
echo $form->input('organization_id')

ve otomatik kontrolörleri verilerden organization_id değeri gireceğiz.