Vlastní formulářový prvek – zobrazuje se dvakrát v šabloně
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- konva
- Člen | 88
Ahoj,
snažím se vytvořit vlastní formulářový prvek, tak aby mi vypsal několik inputů do jednoho řádku
Kód je tento
class MultiField extends Nette\Forms\Controls\BaseControl
{
private $values;
private $fields;
public function __construct($label = NULL, $fields)
{
parent::__construct($label);
$this->fields = $fields;
}
public function setValue($value)
{
$this->values = $value;
}
public function getValue()
{
return $this->values;
}
public function loadHttpData()
{
foreach($this->fields as $key=>$elem){
$this->values[$key] = $this->getHttpData(Form::DATA_LINE, "$key");
}
}
/**
* Generates control's HTML element.
*/
public function getControl()
{
$name = $this->getHtmlName();
$element = Html::el();
foreach($this->fields as $key=>$elem){
$element->add(Html::el('span')->setHtml($elem)->add(Html::el('input')->name("$key")->id($this->getHtmlId())->value($this->values[$key])));
}
return $element;
}
}
Ve formuláři používám i addGroup. Problém ale je, že se mi
v šabloně zobrazí dané položky ve formuláři dvakrát. Jednou v dané
groupě a podruhé na konci formuláře mimo všechny Group.
Poradíte kde dělám chybu?
díky
Lukáš
- David Matějka
- Moderator | 6445
v getControl je dulezity tento radek, default renderer se podle nej rozhoduje, zda jiz byl prvek vykreslen