IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
ONIO s.r.o.
Člen
Avatar
ONIO s.r.o.:23.6.2016 15:06

Ahoj, mám dotaz. Dá se snippet překreslit i mimo handle metody?
Mám datatablu a potřebují ji překreslit po odeslání formuláře (editační i přidávací).
Oba formuláře se mi otevírají v dailogu.

Předem díky za rady.

 
Odpovědět
23.6.2016 15:06
Avatar
Odpovídá na ONIO s.r.o.
Martin Konečný (pavelco1998):23.6.2016 15:15

Mělo by ti v metodě na zpracování použít

$presenter->redrawControl("název snippetu");

kde $presenter může být $this (pokud jsi v presenteru), nebo třeba $this->presenter, pokud jsi v komponentě.

Nahoru Odpovědět
23.6.2016 15:15
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
ONIO s.r.o.
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
ONIO s.r.o.:23.6.2016 15:19

Bohužel nefunguje. Tento kod mám v presenteru:

/**
                 * Vytvoří formulář pro úpravu dané entity
                 *
                 * @param $entity
                 * @return Form
                 */
                public function createComponentEditConfigForm($entity)
                {

                        $this->configurationFacade->setEntity($this->getEntity());

                        $form = $this->BuildEditForm();

                        $form->onSuccess[] = function (Form $form) {

                                $presenter = $form->getPresenter();
                                //$presenter->flashMessage("form.config.updateSuccess");
                                //$this->section->remove();
                                //$this->oneToManySection->remove();
                                //zatím nefunguje :(
                                $presenter->redrawControl("pokus");
                                $this->redrawControl("editTable");
                        };

                        return $form;
                }

Jak jde vidět zakomentoval jsem manipulaci se session, takže tímto to být nemůže.
Jednou volám redirect přes this, jednou přes presenter.

Editováno 23.6.2016 15:20
 
Nahoru Odpovědět
23.6.2016 15:19
Avatar
Odpovídá na ONIO s.r.o.
Martin Konečný (pavelco1998):23.6.2016 15:26

jak máš udělanou šablonu? nemáš ten snippet někde v includované šabloně? jakou JS knihovnu pro ten ajax používáš?

Nahoru Odpovědět
23.6.2016 15:26
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
ONIO s.r.o.
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
ONIO s.r.o.:23.6.2016 15:32

používám nittro konkrétně nittro.full.js
ne includovanou ji nemám. Vypadá takto:

{block content}
<h2>Application</h2>
{snippet editTable}
    {control configTable}
{/snippet}

{snippet pokus}
   pok {$pokus}
{/snippet}


{snippet showModal}
{if $showSimpleForm}
    {snippet simpleForm}
<!-- Modal -->
<script>$('#myModal').modal();</script>
<div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog modal-lg">

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Modal Header</h4>
            </div>
            <div class="modal-body">


        <h2 class="center">Úprava aplikace</h2>
        <div class="row">
        <div class="col-md-1"></div>
        <div class="col-md-10">
            {control editConfigForm}

            <br>
            <h2 class="center"> Nahrávání souborů </h2>
            <br>

            {control multiFile}
        </div>
        <div class="col-md-1"></div>


        </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
            </div>

        </div>
    </div>
        <script>
            initTinyMce('descreption');
            $( "#frm-editConfigForm" ).submit(function( event ) {
                //alert( "Handler for .submit() called." );
                $(".close").click();
                $('#myModal').close();
            });
        </script>

    {/snippet}
{/if}
{/snippet}


    <!-- tak a modal pro přidávání -->
    {snippet showInsertModal}
    {if $showSimpleInsertForm}
    {snippet simpleInsertForm}
    <script>$('#myInsertModal').modal();</script>
    <div class="modal fade" id="myInsertModal" role="dialog">
        <div class="modal-dialog modal-lg">

            <!-- Modal content-->
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                    <h4 class="modal-title">Modal Header</h4>
                </div>
                <div class="modal-body">


                    <h2 class="center">Úprava aplikace</h2>
                    <div class="row">
                        <div class="col-md-1"></div>
                        <div class="col-md-10">
                            <h2>Configuration Facade test</h2>
                            {control insertConfigForm}
                        </div>
                        <div class="col-md-1"></div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    </div>
                </div>

            </div>
        </div>
        <script>
            initTinyMce('descreption');
            $( "#frm-insertConfigForm" ).submit(function( event ) {
                //alert( "Handler for .submit() called." );
                $(".close").click();
                $('#myInsertModal').close();
            });
        </script>
        {/snippet}
        {/if}
        {/snippet}
{/block}
Editováno 23.6.2016 15:32
 
Nahoru Odpovědět
23.6.2016 15:32
Avatar
Odpovídá na ONIO s.r.o.
Martin Konečný (pavelco1998):23.6.2016 15:41

Nittro neznám, tak ti asi neporadím. Jinde ten AJAX funguje?

Nahoru Odpovědět
23.6.2016 15:41
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
ONIO s.r.o.
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
ONIO s.r.o.:23.6.2016 18:43

Ano v handle metodách mi normálně funguje. Napříkla zde:

public function handleEdit($id)
{
        //nadefinuji si entitu
        $this->entity = $item = $this->configurationFacade->setEntity($this->getEntity())->getEntity($id);

        //pro MultiFileUpload
                $this->mainEntitySection->entity = $this->entity;
                $this->updatedId->id = $id;

        //zpracování
        if ($item) {
                $item = (array)$item;
                //vytvořím formulář a pošlu mu data z entity
                foreach ($item as $key => $value) {
                        $item = $this->SetItem($value, $item, $key);
                        unset($item[$key]);
                }
                $this["editConfigForm"]->setDefaults($item);
        } else {
                $this->flashMessage('Entity is not loaded.', self::TYPE_ERROR);
        }

        if ($this->presenter->isAjax()) {
                $this->template->showSimpleForm = 5;
                $this->redrawControl("showModal");
                $this->redrawControl("editTable");


        }
}
 
Nahoru Odpovědět
23.6.2016 18:43
Avatar
Jan Mottl
Člen
Avatar
Jan Mottl:7.9.2017 14:29

Ahoj, podarilo se to vyresit? Ja jsem narazil na podobny problem. Nedarilo se mi, aby readraw akceptoval zmenu hodnot ve formulari. Zabralo az zruseni komponenty formulare v onSuccess. Pak doslo k znovuvytvoreni formulare a je to OK.

public function accountFormSucceeded(Form $form, $values)
 {
     if ($this->isAjax()) {
         $this->removeComponent($this->getComponent('accountForm'));
         $this->redrawControl('flashes');
         $this->redrawControl('accountFormSnippet');
     } else {
         $this->redirect(':Core:Administration:account', $userId);
     }
 }
 
Nahoru Odpovědět
7.9.2017 14:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.