J'ai un problème étrange.Zend Framework L'élément de formulaire personnalisé se répète
J'ai créé un élément de formulaire personnalisé. Je l'ai créé avec deux select-forme-éléments pour sélectionner une heure (00:00). Les choses étranges est que quand je l'utilise une fois dans une forme c'est ok, mais quand je l'utilise une seconde fois (parce qu'un rendez-vous a un début et une heure de fin) le premier est montré à nouveau. Donc je me retrouve avec trois fois l'élément de forme. Quand je l'utilise encore, il montre les deux premiers et je finis avec 6 fois l'élément de forme.
Est-ce que quelqu'un sait comment l'empêcher de se produire?
Le code:
Form Élément
<?php
class App_Form_Element_TimeSelect extends Zend_Form_Element_Xhtml
{
public $helper = 'FormTimeSelect';
protected $hour = null;
protected $minutes = null;
public function setHour($hour)
{
$this->hour = $hour;
return $this;
}
public function setMinutes($minutes)
{
$this->minutes = $minutes;
return $this;
}
public function setValue($value)
{
if (is_array($value)
&& isset($value['hour'])
&& isset($value['minutes']))
{
$this->setHour($value['hour'])
->setMinutes($value['minutes']);
}
}
public function getValue()
{
if (!$this->hour || !$this->minutes)
return false;
return $this->hour . ':' . $this->minutes;
}
}
L'aide de vue
<?php
class App_View_Helper_FormTimeSelect extends Zend_View_Helper_FormElement {
protected $html = '';
public function FormTimeSelect($name, $value = null, $attribs = null)
{
$hour = '00';
$minute = '00';
if ($value)
list($hour, $minute) = split(':', $value);
$helper = new Zend_View_Helper_FormSelect();
$helper->setView($this->view);
$hourarray = array('00' => '00', '01' => '01', '02' => '02', '03' => '03',
'04' => '04', '05' => '05', '06' => '06', '07' => '07', '08' => '08',
'09' => '09', '10' => '10', '11' => '11', '12' => '12', '13' => '13',
'14' => '14', '15' => '15', '16' => '16', '17' => '17', '18' => '18',
'19' => '19', '20' => '20', '21' => '21', '22' => '22', '23' => '23');
$minutearray = array('00' => '00', '15' => '15', '30' => '30', '45' => '45');
$this->html .= $helper->formSelect($name . '[hour]', $hour, null, $hourarray);
$this->html .= ' : ';
$this->html .= $helper->formSelect($name . '[minutes]', $minute, null, $minutearray);
return $this->html;
}
}
Merci!
Peter
Essayez d'abord sans utiliser la notation de tableau ici: ($ nom [heure]). Il n'est pas très pratique avec Zend_Form, vous devrez peut-être utiliser des sous-formulaires pour les utiliser. –