%PDF- %PDF-
Direktori : /proc/thread-self/root/www/varak.net/losik.varak.net/vendor/nette/forms/src/Forms/ |
Current File : //proc/thread-self/root/www/varak.net/losik.varak.net/vendor/nette/forms/src/Forms/ControlGroup.php |
<?php /** * This file is part of the Nette Framework (https://nette.org) * Copyright (c) 2004 David Grudl (https://davidgrudl.com) */ declare(strict_types=1); namespace Nette\Forms; use Nette; /** * A user group of form controls. */ class ControlGroup { use Nette\SmartObject; /** @var \SplObjectStorage */ protected $controls; /** @var array user options */ private $options = []; public function __construct() { $this->controls = new \SplObjectStorage; } /** @return static */ public function add(...$items) { foreach ($items as $item) { if ($item instanceof Control) { $this->controls->attach($item); } elseif ($item instanceof Container) { foreach ($item->getComponents() as $component) { $this->add($component); } } elseif (is_iterable($item)) { $this->add(...$item); } else { $type = is_object($item) ? get_class($item) : gettype($item); throw new Nette\InvalidArgumentException("Control or Container items expected, $type given."); } } return $this; } public function remove(Control $control): void { $this->controls->detach($control); } public function removeOrphans(): void { foreach ($this->controls as $control) { if (!$control->getForm(false)) { $this->controls->detach($control); } } } /** @return Control[] */ public function getControls(): array { return iterator_to_array($this->controls); } /** * Sets user-specific option. * Options recognized by DefaultFormRenderer * - 'label' - textual or Nette\HtmlStringable object label * - 'visual' - indicates visual group * - 'container' - container as Html object * - 'description' - textual or Nette\HtmlStringable object description * - 'embedNext' - describes how render next group * * @return static */ public function setOption(string $key, $value) { if ($value === null) { unset($this->options[$key]); } else { $this->options[$key] = $value; } return $this; } /** * Returns user-specific option. * @return mixed */ public function getOption(string $key) { if (func_num_args() > 1) { $default = func_get_arg(1); } return $this->options[$key] ?? $default ?? null; } /** * Returns user-specific options. */ public function getOptions(): array { return $this->options; } }