$form->addText jak změnit polohu textu

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

Zdravím

Mám textový políčko

$form->addText('titulek', 'Nadpis', 50,100)

a chtěl bych aby se mi text ‚Nadpis‘ nezobrazoval vlevo vedle textovýho pole ale nad textovým polem, jde to nějak jednoduše udělat? nebo aspoň nějakým způsobem abych nepřidal dalších sto řádků kodu.

Dík za rady

llsm
Člen | 121
+
0
-

Podívej se do dokumentace, vykreslování formulářů je tam věnována taky kapitola, viz. A na foru uz se to taky resilo.

jiziii
Člen | 12
+
0
-

Tak kapitolu formulářů už jsem čet asi 10 krát ale jako uplnej začátečník z některejch věcí v něm nejsem vubec moudrej, a v tom druhým odkazu nevidím vubec žádnou spojitost s mím problemem.
Jediný co sem vydedukval že asi musím to textový pole dát do tabulky ale nemám tušení jak?
potřeboval bych poradit jen co v tom jednom mím řádku formuláře mám upravit nebo připsat pak se už nějak snad chytnu

llsm
Člen | 121
+
0
-

Zalezi, co presne chces, tvoje zadani je obecne, tudiz nevim, jestli chces vsechny Nadpisy vsech poli formulare zobrazit nebo jen nektere a jak, podle toho je nutne zvolit postup:

1) je moznost, pokud to nechces mit v tabulce, ale staci ti treba div a p, tak pouzit jen vlastni renderer v tovarnicce formulare (ale to neni hezke reseni z hlediska html):

<?php
$renderer = $form->getRenderer();
$renderer->wrappers['controls']['container'] = 'div';
$renderer->wrappers['pair']['container'] = NULL;
$renderer->wrappers['label']['container'] = 'p';
$renderer->wrappers['control']['container'] = 'p';
?>

2) vsechny Nadpisy v html tabulce:

{form form}
<table>
    {foreach $form->components as $component}
    <tr>
        <th>{label $component/}</th>
    </tr>
    <tr>
        <td>{input $component}</td>
    </tr>
    {/foreach}
</table>
{/form}

3) Jen nektere (tady clovek musi vykreslit jednotlive prvky):

{form form}
<table>
    <tr>
        <th colspan='2'>{label prvni/}</th>
    </tr>
    <tr>
        <td colspan='2'>{input prvni}</td>
    </tr>
    <tr>
        <th>{label druhy/}</th>
        <td>{input druhy}</td>
    </tr>
</table>
{/form}

Editoval llsm (27. 4. 2013 15:50)

jiziii
Člen | 12
+
0
-

Takže mám tu pole pro vkládání nadpisu a pak textový pole pro vložení textu v NotepadPresenteru.php

protected function createComponentDokument() {

        $form = new Form();
        $form->addText('titulek', 'Nadpis', 50,100)
                ->addRule(Form::FILLED, 'Vložte nadpis');
        $form->addTextArea('text', 'Článek' ,20,40)
                ->addRule(Form::FILLED, 'Nemužete uložit prázdný článek')
                ->getControlPrototype()->class('mceEditor');
        $form->addSubmit('create', 'Vytvořit');
        $form->onSuccess[] = $this->taskClanekUlozit;

        return $form;
    }

a texty ‚Nadpis‘ a ‚Článek‘ se mi píšou vedle textovích polí a zbytečně to ubere místo, tedy chci ty popisky těch polí dát nad ty textový pole, ten druhej zpusob řešení vypadá docela přehledně akorát nevím co kam hodit :(
dík

llsm
Člen | 121
+
0
-

V tom pripade do sablony misto

{widget dokument}

nebo

{control dokument}

vloz:

{form dokument}
        <table>
        {foreach $form->components as $component}
            <tr>
                <th>{label $component/}</th>
            </tr>
            <tr>
                <td>{input $component}</td>
            </tr>
        {/foreach}
        </table>

{/form}

Editoval llsm (27. 4. 2013 15:51)

jiziii
Člen | 12
+
0
-

Super to je přesně ono moc dík

hAssassin
Člen | 293
+
0
-

necetl jsem cele, ale {widget dokument} nebude fungovat, jen abys nebyl prekvapeny. Makro widget je deprecated uz nejakou dobu, mozna uz je dokonce uplne smazany.