| 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: 9 let
|
|||
0