Autor | Zpráva | ||
---|---|---|---|
piiiiiiiip Profil |
#1 · Zasláno: 9. 1. 2017, 13:42:28
Dobrý den. Chci se zeptat jestly někdo neví jak dát do formuláře checkbox když používím nette a bootstrap3.
Zkoušel jsem : $form->addCheckbox('test', 'Test'); |
||
Taps Profil |
#2 · Zasláno: 9. 1. 2017, 14:28:36
Mas to i v prikladech...jinak github.com/nette/forms/blob/master/examples/bootstrap3-rendering.php
|
||
piiiiiiiip Profil |
To mi nefungovalo.
Call to undefined function App\CoreModule\Presenters\makeBootstrap3() |
||
Taps Profil |
#4 · Zasláno: 9. 1. 2017, 14:43:17
Mas aktualni verzi nette?
|
||
piiiiiiiip Profil |
#5 · Zasláno: 9. 1. 2017, 14:44:54
Ne, mám 2.3
|
||
Taps Profil |
#6 · Zasláno: 9. 1. 2017, 15:04:59
Tak ja pouzivam aktualni verzi a nemam zadny problem.
|
||
Zechy Profil |
#7 · Zasláno: 9. 1. 2017, 15:09:27
Taps:
To nebude aktuální verzí, dle chyby to evidentně špatně implementoval ten příklad. piiiiiiiip: A jak si ten příklad implementoval? Ukaž kod. |
||
piiiiiiiip Profil |
#8 · Zasláno: 9. 1. 2017, 15:20:25
class TestPresenter extends BaseCorePresenter { function makeBootstrap3(Form $form) { $renderer = $form->getRenderer(); $renderer->wrappers['controls']['container'] = NULL; $renderer->wrappers['pair']['container'] = 'div class=form-group'; $renderer->wrappers['pair']['.error'] = 'has-error'; $renderer->wrappers['control']['container'] = 'div class=col-sm-9'; $renderer->wrappers['label']['container'] = 'div class="col-sm-3 control-label"'; $renderer->wrappers['control']['description'] = 'span class=help-block'; $renderer->wrappers['control']['errorcontainer'] = 'span class=help-block'; $form->getElementPrototype()->class('form-horizontal'); $form->onRender[] = function ($form) { foreach ($form->getControls() as $control) { $type = $control->getOption('type'); if ($type === 'button') { $control->getControlPrototype()->addClass(empty($usedPrimary) ? 'btn btn-primary' : 'btn btn-default'); $usedPrimary = TRUE; } elseif (in_array($type, ['text', 'textarea', 'select'], TRUE)) { $control->getControlPrototype()->addClass('form-control'); } elseif (in_array($type, ['checkbox', 'radio'], TRUE)) { $control->getSeparatorPrototype()->setName('div')->addClass($type); } } }; } protected function createComponentTestForm() { $form = $this->formFactory->create(); makeBootstrap3($form); . . . |
||
Zechy Profil |
<?php class TestPresenter extends BaseCorePresenter { function makeBootstrap3(Form $form) { $renderer = $form->getRenderer(); $renderer->wrappers['controls']['container'] = NULL; $renderer->wrappers['pair']['container'] = 'div class=form-group'; $renderer->wrappers['pair']['.error'] = 'has-error'; $renderer->wrappers['control']['container'] = 'div class=col-sm-9'; $renderer->wrappers['label']['container'] = 'div class="col-sm-3 control-label"'; $renderer->wrappers['control']['description'] = 'span class=help-block'; $renderer->wrappers['control']['errorcontainer'] = 'span class=help-block'; $form->getElementPrototype()->class('form-horizontal'); $form->onRender[] = function ($form) { foreach ($form->getControls() as $control) { $type = $control->getOption('type'); if ($type === 'button') { $control->getControlPrototype()->addClass(empty($usedPrimary) ? 'btn btn-primary' : 'btn btn-default'); $usedPrimary = TRUE; } elseif (in_array($type, ['text', 'textarea', 'select'], TRUE)) { $control->getControlPrototype()->addClass('form-control'); } elseif (in_array($type, ['checkbox', 'radio'], TRUE)) { $control->getSeparatorPrototype()->setName('div')->addClass($type); } } }; } protected function createComponentTestForm() { $form = $this->formFactory->create(); $this->makeBootstrap3($form); // .... } On ten příklad od Grudla totiž není ve třídě, proto tam volá tu funkci jako každou jinou. Ty to ale máš zapsané ve třídě, tudíž musíš volat metodu makeBootstrap3 přes $this. Jinak se PHP pokouší volat funkci ve stejném jmenném prostoru. Btw. Je lepší vytvářet formuláře jako komponenty a né přímo v presenteru, nikdy nevíš, jestli ten formulář nebudeš muset volat na 10 místech. |
||
piiiiiiiip Profil |
Tet mi to vrací chybu: Cannot read an undeclared property Nette\Application\UI\Form::$onRender.
Tak je to vyřešeno. V CSS (nainstalován s bootstrapem) je checkbox display: none; |
||
Časová prodleva: 7 let
|
0