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
+
0
-

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
+
0
-
  1. v nette je primo checkboxlist, takze muzes zdedit ten https://api.nette.org/…boxList.html
  2. kdyby to neslo, tak se koukni do kodu a uvidis, jak ten checkboxlist vykresluje: https://api.nette.org/…ist.php.html#…