tinyMCE chyba při ukládání obsahu do databáze

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

Zdravím, s natte tak trošku začínám a snažím se zprovoznit tinyMCE v aplikaci, bohužel při pokusu uložit obsah textarea mi laděnka vyhodí hlášku: Trying to get property of non-object

Odkazuje na metodu v modelu a přímo na řádek 3 v mojí funkci save:

public function save(array $data){
         if (!isset($data['id']) || $data['id'] == NULL) {
         $this->context->database->table('informace')->insert($data);
       } else {
           $this->context->database->table('informace')->update($data, array('id' => $data['id']));
}

Nevíte někdo kde může být chyba? Za jakoukoli radu předem vřelé díky

Editoval Nevinho (11. 3. 2014 22:48)

akadlec
Člen | 1326
+
0
-

zkus si do definice toho formu přidat tohle:

// TinyMCE handling
$this->getElementPrototype()->onsubmit('tinyMCE.triggerSave()');

nebo

// TinyMCE handling
$form->getElementPrototype()->onsubmit('tinyMCE.triggerSave()');

podle toho jak si ten form vyváříš.

Nevinho
Člen | 77
+
0
-

Zkusil jsem tvůj nápad, ale nic se nezměnilo. Pořád stejná chyba. V databázi mám tabulku informace (id, article).

Presenter: DataPresenter

<?php

/**
 * Description of DataPresenter
 *
 * @author Jirka
 */

use Nette\Application\UI\Form;

class DataPresenter extends BasePresenter {




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



         if (!$this->user->isLoggedIn()) {
            $this->redirect('Sign:in', array('backlink' => $this->storeRequest()));



        }
    }

    public function renderFirmy()
    {

    }




   protected function createComponentFinanceGrid()
    {
        return new FinanceGrid($this->context->database->table("financni_informace"));
    }


    protected function createComponentVyrobniGrid()
    {
        return new VyrobniGrid($this->context->database->table("vyrobni_informace"));
    }


    protected function createComponentOsobyGrid()
    {
        return new OsobyGrid($this->context->database->table("osoby"));
    }





    /**
     * Creates TestWysiwyg component.
     *
     * @return Nette\Application\UI\Form
     */

   protected function createComponentTestWysiwyg() {
    $form = new Form();
    // zavěšení handleru na událost onSuccess
    $form->onSuccess[] = callback($this, 'testWysiwyg_onSuccess');
    $form->addTextArea('text', '')
        ->getControlPrototype()->class('mceEditor');
    $form->getElementPrototype()->onsubmit('tinyMCE.triggerSave()');
    return $form;


}

  /**
     * Handles TestWysiwyg 'onSuccess' event.
     * Saves input text data.
     *
     * @param Nette\Application\UI\Form $form
     * @return void
     */

public function testWysiwyg_onSuccess(Form $form)
    {
        $values = $form->getValues();
        // metoda modelu, která se stará o ukládání záznamů, konkrétní implementace je už na tobě
        $this->context->saveModel->save(array('text' => $values['text']));
        $this->flashMessage('Text uložen ');
        $this->redirect('this');
    }
}

Nevím už kde může být chyba.. Kdyby byla nějaká rada, byl bych velice vděčný..

David Matějka
Moderator | 6445
+
0
-

v tve modelove tride mas dostupne pouze ty sluzby, ktere si injectnes ⇒ injectni si Nette\Database\Context
viz cheatsheet o di