Vytvoření checkboxlistu přes Forms\Helpers
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- iwory
- Člen | 147
Zdravím, chtěl jsme vytvořit checkboxlist pomocí třídy Forms\Helpers
ale zjistil jsem že neexistuje metoda na vytvoření checkboxlistu, ale pouze
inputu a selectboxu.
Je nějaký důvod proč tam není nebo se to řeší jinak? Nebo jí můžu
dopsat?
Díky za info.
class Services_input extends Forms\Controls\BaseControl {
/** @var null|int */
private $serviceID;
/** @var \App\Model\Calculator\CalculatorService */
private $calculatorService;
public function __construct($label = NULL, \App\Model\Calculator\CalculatorService $calculatorService)
{
parent::__construct($label);
$this->calculatorService = $calculatorService;
$this->addRule([__CLASS__, 'validateService'], 'Špatně zvolená služba');
}
public function setValue($value)
{
if($value && Nette\Utils\Validators::isNumericInt($value))
$this->serviceID = $value;
else
$this->serviceID = NULL;
}
public function getValue()
{
return $this->serviceID;
}
public function loadHttpData()
{
$httpData = $this->form->getHttpData();
$this->serviceID = array_key_exists('service', $httpData) ? $httpData['service'] : NULL;
}
public function getControl()
{
$name = $this->getHtmlName();
// Toto potřebuji nahradit za checkbox list
return Forms\Helpers::createSelectBox($this->calculatorService->table_services()->fetchPairs('id', 'name'), array('selected?' => $this->serviceID))->name($name);
}
public static function validateService($item)
{
return TRUE;
}
}
Volání
$form = new Nette\Application\UI\Form();
$form['service'] = new Services_input('Servis', $this->calculatorService);
- David Matějka
- Moderator | 6445
- v nette je primo checkboxlist, takze muzes zdedit ten https://api.nette.org/…boxList.html
- kdyby to neslo, tak se koukni do kodu a uvidis, jak ten checkboxlist vykresluje: https://api.nette.org/…ist.php.html#…