Ajax a select z databáze, mazání položek ze seznamu

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

Ahoj,
omlouvám se za dotaz, který už tu byl nejspíš zodpovězen.

Začínám s AJAXem a Nette obecně.Mám seznam, ve kterém bych rád mazal položky, které jsou uloženy v DB. Pro jednoduchost chci překreslit celý seznam, vím že by to šlo udělat efektivněji…

    <ul n:snippet="answerList">
        {foreach $answers as $answer}
            <li>{$answer->text} <a class="ajax" n:href="delete! $answer->id">smaz</a></li>
        {/foreach}
    </ul>

V presenteru:

	private $answers;

    public function __construct(Model\Answers $answers) {
        $this->answers = $answers;
    }

    public function renderDefault() {
        if (!isset($this->template->answers)){
            $this->template->answers = $this->answers->findAll();
        }
    }

    public function handleDelete($answerId){
        $this->answers->delete($answerId); //záznam se z DB smaže
        $this->template->answers = $this->answers->findAll(); // asi vrátí prázdný počet řádků
        $this->redrawControl('answerList'); //a list je prázdný
    }

Předem děkuji za veškerou pomoc

ali
Člen | 342
+
+1
-

v handle metode nemusis predavat do template nic, o to se stara render metoda

Pix
Člen | 5
+
0
-

Dobrá, řekněme že už nic nepředávám…

Podle mého posledního výzkumu se místo

SELECT `id`, `text`
FROM `answers`

Provede

SELECT `id`
FROM `answers`
WHERE (`id` = '2') //id smazane polozky

Mám tedy něco špatně s modelem?

    /** @var Nette\Database\Context */
    private $database;

    public function __construct(Nette\Database\Context $database) {
        $this->database = $database->table("answers");
    }

    public function findAll() {
        return $this->database;
    }
trejjam
Backer | 65
+
0
-

Zkus nám ukázat větší kus modelu, myslím, že chyba bude tam.

David Matějka
Moderator | 6445
+
+1
-
$this->database = $database->table("answers");

nepouzivej. Uloz si database a ->table(...) si zavolej pokazde znovu, aby ti to vytvorilo instanci selection znovu…

Pix
Člen | 5
+
0
-

Jéé :)
Mockrát děkuji, teď koukám že to tak je i v examples/CD-collection