Diskuze: nette - ajax snippet

PHP Nette Framework Nette framework nette - ajax snippet

Avatar
ONIO s.r.o.
Člen
Avatar
ONIO s.r.o.:

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. června 15:06
Avatar
Odpovídá na ONIO s.r.o.
Martin Konečný (pavelco1998):

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  +1 23. června 15:15
Avatar
ONIO s.r.o.
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
ONIO s.r.o.:

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. června 15:20
 
Nahoru Odpovědět 23. června 15:19
Avatar
Odpovídá na ONIO s.r.o.
Martin Konečný (pavelco1998):

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. června 15:26
Avatar
ONIO s.r.o.
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
ONIO s.r.o.:

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. června 15:32
 
Nahoru Odpovědět 23. června 15:32
Avatar
Odpovídá na ONIO s.r.o.
Martin Konečný (pavelco1998):

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

 
Nahoru Odpovědět 23. června 15:41
Avatar
ONIO s.r.o.
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
ONIO s.r.o.:

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. června 18:43
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 7 zpráv z 7.