problém s umístěním popisku radio buttonu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
n.u.r.v.
Člen | 485
+
0
-

Ahoj, ve formuláři mám radiolist:

v presenteru takto:

public function createComponentUzivatelEditForm() {
 $opravneni = array(
            '1' => 'Administrátor',
            '2' => 'Uživatel'
        );
$form = new Form();
        $form->setRenderer(new BootstrapRenderer);
...
$form->addRadioList('role', 'Role:', $opravneni)
                    ->setDefaultValue($role)
                    ->setRequired('Vyberte prosím roli uživatele!');
...
}

a v latte vykreslení formuláře:

...
{form uzivatelEditForm}
        <?php $form->render('begin') ?>
        <?php $form->render('errors') ?>
...
...
<label class="required control-label" for="frmuzivatelEditForm-role">Role:</label>{input role}
...

A problém je, že popisek k radibuttonu se vykreslí pod tím radiobuttonem, takže to vypadá děsně – viz obrázek:
"":http://2i.cz/dc64b69c4f

Nevíte, jak to udělat, aby popisek u radiobuttonu byl u něj po boku (alespoň za ním, když ne před ním)… Díky moc.

Editoval n.u.r.v. (6. 8. 2013 16:03)

frosty22
Člen | 373
+
0
-

No trošku škoda, když už používáš BoostrapRenderer, že si nenecháš ten formulář celý vykreslit rovnou, čili:

{control uzivatelEditForm}

Potom tedy jen druhá věc, zbytečně vykresluješ celý label tag, to samé co tam máš uvedeno stačí takto:

{form uzivatelEditForm}
	{control uzivatelEditForm errors}
	{label role /}{input role}
{/form}

A nakonec k tvému dotazu, tak možná takhle:

{form uzivatelEditForm}
	{control uzivatelEditForm errors}
	{label role /}
        <div class="controls">{input role}</div>
{/form}
n.u.r.v.
Člen | 485
+
0
-

frosty22 napsal(a):

No trošku škoda, když už používáš BoostrapRenderer, že si nenecháš ten formulář celý vykreslit rovnou, čili:

{control uzivatelEditForm}

Potom tedy jen druhá věc, zbytečně vykresluješ celý label tag, to samé co tam máš uvedeno stačí takto:

{form uzivatelEditForm}
	{control uzivatelEditForm errors}
	{label role /}{input role}
{/form}

A nakonec k tvému dotazu, tak možná takhle:

{form uzivatelEditForm}
	{control uzivatelEditForm errors}
	{label role /}
        <div class="controls">{input role}</div>
{/form}

Ok, díky – zkusím a dám vědět…

n.u.r.v.
Člen | 485
+
0
-

frosty22 napsal(a):

No trošku škoda, když už používáš BoostrapRenderer, že si nenecháš ten formulář celý vykreslit rovnou, čili:

{control uzivatelEditForm}

Potom tedy jen druhá věc, zbytečně vykresluješ celý label tag, to samé co tam máš uvedeno stačí takto:

{form uzivatelEditForm}
	{control uzivatelEditForm errors}
	{label role /}{input role}
{/form}

A nakonec k tvému dotazu, tak možná takhle:

{form uzivatelEditForm}
	{control uzivatelEditForm errors}
	{label role /}
        <div class="controls">{input role}</div>
{/form}

Ahoj, už vím, proč jsem nepoužil

{control uzivatelEditForm}

Sice to funguje, ale potřebuji nad předposlední pole umístit kod pro zobrazení kvality hesla:

<p><strong for='passwordStrength'>Kvalita hesla: </strong><span id='passwordDescription'>Nebylo vloženo heslo!</span><div id='passwordStrength' class='strength0'></div></p><br>

Jak to udělat, když používám control? Díky

frosty22
Člen | 373
+
0
-

To já bych byl línej a udělal bych to přes CSSka a position absolute .. či alternativně bych si udělal vlastní control, který by již tohle celé obsahoval i s vlastním render tedy, což je vesměs to jediné podstatné – zdědit PasswordControl a v render rozšířit o tento kus HTML kodu

n.u.r.v.
Člen | 485
+
0
-

frosty22 napsal(a):

To já bych byl línej a udělal bych to přes CSSka a position absolute .. či alternativně bych si udělal vlastní control, který by již tohle celé obsahoval i s vlastním render tedy, což je vesměs to jediné podstatné – zdědit PasswordControl a v render rozšířit o tento kus HTML kodu

ééé? mohl by si sem dát kus kodu s tím controlem? zas tak se v tom ještě nevyznám…díky

frosty22
Člen | 373
+
0
-

No postup s tím Controlerem je trošku těžší, ale vesměs například tady:

https://componette.org/search/?…
https://github.com/…swdInput.php

je addon, který rozšiřuje password o nějaké možnosti, v tvém případě to bude lehčí stačí jen přepsat metodu .. getControl() .. čili vytvoříš 1 třídu nějaký svůj ExtendedPasswordInput, podědíš z Nette\Forms\Controls\TextInput a přepíšeš tu metodu ve které zavoláš parent::getControl() a doplníš tu HTML část ..

A někde musíš při startu aplikace přidat toto tvé rozšíření něco jako:
Nette\Forms\Form::extensionMethod(‚addPswd‘, function (Form $form, $name, $label) { return $form[$name]=new PswdInput($label); })

viz všechny formulářová rozšíření