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
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
- Pix
- Člen | 5
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;
}
- David Matějka
- Moderator | 6445
$this->database = $database->table("answers");
nepouzivej. Uloz si database a ->table(...)
si zavolej
pokazde znovu, aby ti to vytvorilo instanci selection znovu…