Editace v modálním okne – TB3

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

Zdravím a prosím o radu.

Udelal jsem si vkladani záznamu přes modální okno pomocí Twitter Bootstrap3 a ted nevím, jak s editaci.

mam toto:
v default.latte

<button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#person">
        Přidat záznam
</button>

{snippet formaddPersonal}
    {form addPersonal class => 'form-horizontal ajax', role => 'form'}
        <div class="modal fade" id="person" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                        <h4 class="modal-title" id="myModalLabel">Osoba</h4>
                    </div>
                    <div class="modal-body">
			// .... formulář
                    </div>
                    <div class="modal-footer">
                        {input ulozit class => "btn btn-success"}
                    </div>
                </div>
            </div>
        </div>
    {/form addPersonal}
{/snippet}

v presenteru klasickou komponentu na form a vse funguje jak ma…

A ted jen nevím, jak nejlépe vyvolat na řádce modalní okno s formulářem pro editaci..
Kam odkázát s IDckem a jak nastavit view …

Moc díky za tip..

Grelek
Člen | 233
+
0
-

Nějak nechápu, co chceš vlastně udělat.

Pokud chceš udělat to, aby při kliknutí na odkaz „Editovat“ v řádku se načetly do formuláře data z řádku, budeš muset AJAXem při kliknutí načíst data, vložit je do formuláře, překreslit ten snippet a teprve potom otevřít to okno.

MW
Člen | 626
+
0
-

Takhle me to prijde logicky, ale jak to udelat? Přes handle ?
Muzu poprosit o priklad.. pro ty pomalejsi :-)

Diky !

sKopheK
Člen | 207
+
0
-

Volal bych redrawControl('formaddPersonal') v handlu a pak předal komponentě data pro formulářové prvky.

MW
Člen | 626
+
0
-

Tak v komponete gridu mam link:

<a href="{plink edit! $primary}" data-toggle="modal" data-target="#person" class="tt btn btn-primary btn-xs" title="Upravit"><span class="glyphicon glyphicon-edit"></span></a>

a v presenteru mam handle:

public function handleEdit($id) {

        if($id) {
		$data = $this->context->personalModel->getData()->where('id', $id)->fetch();
		$this['addPersonal']->setDefaults($data);
	}
       $this->invalidateControl('formaddPersonal');
    }

no ale ten invalidate me totalne rozhodí modal s formularem :-(

prikladam i latte:

{block content}

<h2>Modul evidence personálu</h2>

{if $user->isAllowed('personal', 'edit')}
    <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#person">
        Přidat záznam
    </button>
{/if}


{snippet formaddPersonal}
    {form addPersonal class => 'form-horizontal ajax', role => 'form'}
        <div class="modal fade" id="person" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                        <h4 class="modal-title" id="myModalLabel">Osoba</h4>
                    </div>
                    <div class="modal-body">

                        <ul class="error" n:if="$form->hasErrors()">
                            <li n:foreach="$form->errors as $error">{$error}</li>
                        </ul>

                        <div class="form-group">
                            {label name /}<br />{input name class => "form-control"}
                        </div>
                        <div class="form-group">
                            {label lname /}<br />{input lname class => "form-control"}
                        </div>
                        <div class="form-group">
                            {label title /}<br />{input title class => "form-control"}
                        </div>
                        <div class="form-group">
                            {label place /}<br />{input place class => "form-control"}
                        </div>
                        <div class="form-group">
                            {label function /}<br />{input function class => "form-control"}
                        </div>
                        <div class="form-group">
                            {label phone /}<br />{input phone class => "form-control"}
                        </div>
                        <div class="form-group">
                            {label from /}<br />{input from class => "form-control date hasdatepicker"}
                        </div>
                        <div class="form-group">
                            {label birthday /}<br />{input birthday class => "form-control date hasdatepicker"}
                        </div>
                        <div class="form-group">
                            {label note /}<br />{input note class => "form-control"}
                        </div>

                    </div>
                    <div class="modal-footer">
                        {input ulozit class => "btn btn-success"}
                    </div>
                </div>
            </div>
        </div>
    {/form addPersonal}
{/snippet}

Moc díky !

MW
Člen | 626
+
0
-

Nikdo nevi, co delam blbe, prosim?

sKopheK
Člen | 207
+
0
-

Vypadá to, že ti to špatně posílá data – zkontroluj, co přijde za odpověď do prohlížeče, javascript by to nějak měnit neměl. Co máš za PHP? Máš vypnutou direktivu magic_quotes_gpc?

MW
Člen | 626
+
0
-

PHP 5.3.13 a magic_quotes_gpc je off ..

Rozdodí to cely form.. lze to takhle vůbec? nemam ten snippet spatne? Ale jako escapovany to vypada ..

Jan Suchánek
Člen | 404
+
0
-

@MW: Zkus si to rozfungovat nejprv bez modálu jen s ajaxem.

Jinak by mě zajímalo, když form odešleš jak budeš řešit zda je správně vyplněný či ne
a při jaké akci modal zmizí? Bude to celé jen ajax nebo budeš i redirectovat?

Editoval jenicek (26. 3. 2014 10:20)

MW
Člen | 626
+
0
-

Validaci mam přes JS .. standard z NETTE, vyskakovací okno.. žádná live..
A po odeslani a invalidaci gridu se okno zavre.. Při vkladani toto funguje…

Ale mozna na to jdu uplne blbe…

Nemáte někdo nejaký správný postup, prosím?

Diky !

MW
Člen | 626
+
0
-

jenicek napsal(a):

@MW: Zkus si to rozfungovat nejprv bez modálu jen s ajaxem.

Jak to vlastne myslis? jen prekreslovanim snippetu?

Díky

Jan Suchánek
Člen | 404
+
0
-

@MW: No já že jsem tohle řešil i bez redirectu po správném odeslání formuláře z modalového okna a překreslení gridu, a samozřejmě jsem zkoušel invalidaci zda je isSuccess a v případě, že nebyl okno modalu jsem nezavíral.

Editoval jenicek (26. 3. 2014 11:09)

MW
Člen | 626
+
0
-

Nemas nekde prosím zdroj na ukázku? Potrebuju na to nejak prijit…

Diky!

Jan Suchánek
Člen | 404
+
0
-

@MW: Musel bych jí vyseparovat example osekanej bez blbostí nemám. Navíc teď uvažuji že to celé předělám. Ono někdy se ten form v modalu vůbec nehodí. Ale zkusím to připravit ale ne asi hnedka. Pokud máš něco hotové ty tak se předveď mohu to okomentovat.

MW
Člen | 626
+
0
-

Ja to cely predelal na klasicky sablony s redirectem s nextras datagridem…
Vůbec ted nevim, jak co nejjednodušeji na to .. vypadalo to jednoduse.. ale jen s prazdnym formem :-)
Potreboval jsem predat něco funkčního, byt provizorne..

Nekde jsem to videl reseni, kde je ten modal jako komponenta, ale to me prislo strasne komplikovany.. asi to mělo důvod …

No jestli něco budes mit, bylo by to super.. nevim kde ted zacit…

Diky !

MW
Člen | 626
+
0
-

Nikdo prosím nemá nějaký simple vzor, jak na editační formulář? Co je potřeba a jak zajistit pro správné naplnění formu..

Diky !

MW
Člen | 626
+
0
-

Diky,

mam to chapat jako, ze je to fix nebo jako extension? Omlouvam se, není me to z toho jasne.
Tento js od Vojty pouzivam…

marek-m
Člen | 66
+
0
-

Inak v tom tvojom priklade predpokladam ze form mas v sablone nie v @layout.latte, cize skus toto

v @layout.latte daj
{snippet formaddPersonal}
{block #ajaxblock}{/block}
{/snippet}

a v sablone daj uz len
{block #ajaxblock}…tvoj kod…{/block}

MW
Člen | 626
+
0
-

Trochu jsem nechapal vyraz „V action edit:“ … kde nasleduje html kod ..
Tedy asi není rec o actionEdit v presenteru, ze .. ?

Proc to musí byt v @layout? to zpusobuje to rozhozeni?

Moc dekuji za pomoc a trpelivost..

MW
Člen | 626
+
0
-

Co resi presne zavirani okna po odeslani formulare? Nejde me to…