Undefined variable: _form
khorsky opened this issue · 5 comments
Při aktualizaci jednoho staršího projektu na Nette 2.4 jsem narazil s vlastními komponentami, založenými na Nextras\Forms\ComponentControl.
Zjednodušený kód:
class PublishingControl extends ComponentControl
{
public function __construct($caption = NULL)
{
parent::__construct($caption);
$this['draft'] = new Checkbox('Uložit draft, zatím nepublikovat');
$this['datePublish'] = new DatePicker('Datum zveřejnění');
}
}
šablona:
<div class="form-group">
<div class="checkbox">
{input draft}
</div>
</div>
<div id="{$toggleId}" class="form-group">
{label datePublish class => "control-label" /}
{input datePublish}
</div>
Nevím, zda tohle nějak nesouvisí s #49 . Pokud změním $_form na $form, změní se i hláška na "undefined variable: form".
"nextras/forms": "^2.0.1",
"nette/forms": "^2.4.6",
"latte/latte": "^2.4.6",
V configu:
extensions:
nextras.form: Nextras\Forms\Bridges\NetteDI\FormsExtension
latte:
macros:
- Nextras\Forms\Bridges\Latte\Macros\BS3InputMacros
Pokud vypnu BS3InputMacros, nic se nezmění. Pokud neaktivuju rozšíření nextras, dostanu end() expects parameter 1 to be array, null given
Verze 1.6.2 ve spojení s 2.3.x Nette fungovala podle očekávání.
Vypadá to na problém v makru, které vypisuje prvky do šablony. V proměných, které jsou šabloně prvku k dispozici, žádný $form
není.
Minimální kód:
// MyControl.php
use Nextras\Forms\ComponentControl;
use Nextras\Forms\Controls\DatePicker;
class MyControl extends ComponentControl
{
public function __construct($caption = NULL)
{
parent::__construct($caption);
$this['checkbox'] = new DatePicker('My checkbox');
}
}
<!-- MyControl.latte -->
{input checkbox}
class HomepagePresenter extends BasePresenter
{
protected function createComponentMyForm()
{
$form = new Form;
$form['myControl'] = new MyControl('My precious');
return $form;
}
}
<!-- šablona akce presenteru -->
{control myForm}
Unfortunately not working, I get an "end() expects parameter 1 to be array, null given" warning on line
if ($_label = end($this->global->formsStack)["checkbox"]->getLabel()) echo $_label ?>
There is no $this->global->formStack
variable in the template. Cache was deleted.
Finally and hopefully fixed in https://github.com/nextras/forms/releases/tag/v2.0.3
Works like a charm, thanks!