Whitespaces ile Zend Framework html form giriş elemanı

2 Cevap php

Ben böyle bir html form oluşturduğunuzda:

$form = new Zend_Form();
$form->setMethod('post');
$form2->addElement('textarea', 'Name with Space');

HTML olur:

...
<textarea name="NamewithSpace" id="NamewithSpace" rows="24" cols="80"></textarea>
...

Mention that the input name becomes camelcase!

Ben $ form-> GetValues ​​çağırdığınızda (); dolu textarea ile bir yazı sonra sonucudur:

array('Name with Space' => NULL); // Whitespace name! But value empty!

Ben $ this-> getRequest () çağırdığınızda; dolu textarea ile bir yazı sonra sonucudur:

array('NamewithSpace' => 'filled in value'); // Camelcase name! Value filled, but name changed!

How can I access the filled in values with the setted name 'Name with Space'?

Ben ZF 1.7.6 kullanıyorum.

2 Cevap

Ne yazık ki yapabilirsiniz sanmıyorum! Sadece ZF kabul değil bir öğe adı olmalıdır bir uygulama için, ZF kaynağını değiştirmek gerekecek.

ZF uzay (ve diğer karakterleri) Zend / Form / Element.php doğrultusunda 424 olan sağlamak için değiştirmeniz gereken normal ifadeyi 1.8.1

Olası bir (daha iyi) bir çözüm birkaç eleman türlerini değiştirmek istiyorsanız, ancak bu çok pratik değildir, özel bir öğe oluşturmak ve FiltreAdı yöntemini geçersiz olacaktır.

Kesinlikle daha iyi bir çözüm olmalı?!

Form yayınlanmıştır sonra bu güncelleştirilmiş değil gibi $form->getValues(), her zaman, size orijinal tuşları ve form nesnesi üzerinde ayarlanmış değerleri gösterecektir. Ancak, gibi bir şey ile sizin için bir avantajdır kullanabilirsiniz:

$textarea = $form->getElement('Name with Space');
$key      = str_replace(' ', '', trim($textarea->getName()));

Istek nesne üzerinde bu anahtarı kullanarak, size sonra konum değerine erişim vermelidir. Bir kesmek biraz, ama işe yarayabilir gibi görünüyor.