CakePHP, nasıl bir tarih aralığındaki modellerini listelemek için bir form oluşturmak mı?

3 Cevap php

Ben çok 'yaratılan' gibi otomatik dolu alanını içeren çok basit bir modeli var. (DateTime biçimi).

Ben mümkünse tarih alanlarını ve etajer doğrulamak için, Form yardımcıları kullanmak istiyorum.

Ben bir "Begin Date" (YAG, 12 saat) ile basit bir form ve bir "Bitiş Tarihi" (aynı biçim) istiyorum.

Aşağıdaki gibi kurulmuş bir denetleyici eylem zaten var:

function view_between($start_date = null, $end_date = null) { 
    // ... stuff that works correctly when the URL is manually entered.
}

Ben denetleyici yanlış tanımlanmış, veya nasıl bu işlevi bu değerleri geçebilir?

Ben iki kez $form->input('my_datetime_field' ...) ekleyerek denedim, ama açıkçası ismi / id ilgili unsurları aynı çünkü ben şaşırıp nedenidir.

Ben de benzer sonuçlar ile $form->dateTime(...) kullanarak denedim.

Ben tek bir alanda etkileşim ne zaman, benzersiz bir Başlangıç ​​ve bitiş tarih seçimini belirlemek için nasıl emin değilim.

Ben bu konuda yanlış mıyım? Doğru yönde bir tür itiş yeterli olacaktır.

3 Cevap

Aynı alan adı ile birden fazla form öğeleri belirtmek için, bu sözdizimini kullanın:

$form->input('Modelname.0.fieldname');
$form->input('Modelname.1.fieldname');

Eğer kullanmak için bir değerler dizisi döndürür hangi.

Gönderen: http://book.cakephp.org/view/547/Field-naming-convention

Sen başlangıç ​​/ bitiş tarihleri ​​ekler bir get isteği oluşturan bir onSubmit yapabilirsiniz:

echo $form->create('Foos', array('onsubmit'='submitDates(this)'));

javascript:

function submitDates(frm) {
    // grab dates from inputs, form get string and submit to form.action
    // get should be something like /controller/view_between/YYYY-MM-DD/YYYY-MM-DD
}

When submitting a FORM, you can only submit it as GET or POST request.
A GET request will attach all form elements to the URL in a format like this:

/controller/action?data[Model][field]=value&data[Model][field2]=value

Bu Kek URL standartlarına uygun değildir, bu yüzden yine yeniden yazma veya ayrıştırma bazı URL yapmak gerekecek.

Bir POST isteği sadece, verilerin her zamanki gibi kontrolör $this->data sona erecek olan.

Her iki şekilde de, doğrudan parametreleri ile bir fonksiyon içine bir form isteği yem olamaz. Sen could Javascript kullanın, ama olmamalıdır öneririz. En iyi ihtimalle bir olağan POST isteği. Sadece $this->data gelen verileri almak için denetleyicisi eylem yeniden yazmak gerekir. Sadece sizin denetleyicisi eylem bunları doğru kullandığınızdan emin olun, istediğiniz ne olursa olsun form alanlarını adlandırın.