Nette Multiplier více formulářů na stránce – zpracování

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

Dobrý den, řeším problém, používám multiplier k vykreslení více formulářu na stránce. Po odesláníformuláře však potřebuji vložit do DB něajké data. To se Však nestane, překvapení je to že na localhostu vše funguje skvěle, na produkčním serveru nikoli. (nevloží se do DB data, ani nedojde k invalidaci flash zprávy) … Osatní formuláře mě normálně fungují, tudíž db funkční je.

Zde je kod presenteru:

class HomepagePresenter extends BasePresenter {

    /** @var Todo\TaskRepository */
    private $voucherRepository;
    private $commentRepository;

    protected function startup() {
        parent::startup();

         if (!$this->getUser()->isLoggedIn()) {
             $this->redirect('Sign:');
         }


        $this->voucherRepository = $this->context->voucherRepository;
        $this->commentRepository = $this->context->commentRepository;
    }
..
..
..

    protected function createComponentCommentForm() {


        $presenter = $this;
        return new Multiplier(function ($itemId)  use ($presenter) {
                    $form = new Nette\Application\UI\Form;
                    $form->addTextArea('text', 'Text:', 5, 3)
                            ->addRule($form::FILLED)
                            ->setRequired('Prosím vložte zprávu!');
                    $form->addText('itemId', 'Id:')->setType('number');
                    $form->addSubmit('send', 'Přidat poznámku')->setAttribute('class', 'btn btn-primary btn-xs');
                    $form->onSuccess[] = function ($form) use ($itemId, $presenter) {


                                $values = $form->getValues();

                                try {
                                    $presenter->commentRepository->createComment($values['text'], (int) $values['itemId'], $this->getUser()->id);
                                    $presenter->flashMessage('Nový komentář  byl vložen do databáze!');
                                } catch (Exception $e) {
                                    $presenter->flashMessage($e->getMessage());
                                }

                                if (!$presenter->isAjax()) {
                                    $presenter->redirect('Homepage:default');
                                } else {
                                    // Také vymaži odeslané hodnoty ve formuláři pomocí volání setValues.
                                    $form->setValues(array(), TRUE);
                                    $presenter->invalidateControl('flashMessagesComment');
                                    $presenter->payload->invalidateComments =  $values['itemId'];
                                    //$this->invalidateControl('voucherTable');
                                }


                            };
                    return $form;
                });
    }

Děkuji moc za radu a postřehy !

Editoval Klainer (13. 8. 2013 13:41)