nefunguje prekresleni snippetu

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

Prosim o pomoc! Prolezl jsem snad vsechny thready a priklady, ale porad nemuzu rozchodit prekresleni snippetu pomoci Ajaxu.

V sablone komponenty volam signal „change“, ktery ma zpusobit dotaz na jinou tabulku v DB a prekreslit vysledek v snippetu menu.

sablona menu.html:

<a href="{link change!}" class="ajax">change</a>
{snippet menu}
<ul>
{foreach $menu as $item}
  <li>{$item['nazev']}</li>
{/foreach}
</ul>
{/snippet}

komponenta Menu.php:

<?php
/*
 ** Komponenta na vykresleni hlavniho menu
 */

class Menu extends Control
{
  /** @var Model */
	protected $model;

	/** @persistent */
	public $table = "aitom_struktury";

  /** @var Menu */
	//public $menu;

	public function __construct()
	{
	  parent::__construct();
	  $this->model = new Model;
  }

	public function handleChange()
	{
	  $this->table = "aitom_skupiny";
	  //debug::dump($this->table);
  }

	/**
	 * Renders menu.
	 */
	public function renderMenu()
	{
    $template = $this->createTemplate();
		$template->menu = $this->model->getDataSource($this->table);
		//debug::dump($template->menu);
		$template->setFile(dirname(__FILE__) . '/menu.phtml');
		$this->invalidateControl('menu');
		$template->render();
	}
}
?>

presenter HomepagePresenter.php:

<?php

/*
 ** Presenter pro hlavni stranku
 *  @persistent(navigace)
 */


class HomepagePresenter extends /*Nette\Application\*/BasePresenter
{

	public function renderDefault()
	{
		$this->template->menu = $this->getComponent('navigace');
	}


	/**
	 * Component factory. Used for lazy component loading
	 *
	 * @param string $name of component
	 * @return Control
	 */
	protected function createComponentNavigace($name)
	{
		return new Menu;
	}
}
?>

a sablona Homepage.default.phtml:

<a href="{link Homepage:}"><h1>Dorotka</h1></a>

<div id="left">
@{control navigace:menu}
</div>
<div id="right">
{snippet detail}
{/snippet}
</div>
Jod
Člen | 701
+
0
-

layout.phtml – @{include $content} :)

Editoval Jod (14. 7. 2009 15:22)

pekinen
Člen | 29
+
0
-

Jod napsal(a):

layout.phtml – @{include $content} :)

To samozrejme mam :)

Jod
Člen | 701
+
0
-

Prípadne neviem či v Controle netreba volať invalidateControl(‚menu‘);
Kukam, že aj to tam más :)
Kuknem lepsie
Skus invalidovať v handleChange.

Editoval Jod (14. 7. 2009 15:26)

Ondřej Mirtes
Člen | 1536
+
0
-

Bez AJAXu (s vypnutým Javascriptem) to funguje?

Podívej se do Firebugu, jestli se něco odesílá (záložka Síť).

Máš tam ten jQuery plugin?

pekinen
Člen | 29
+
0
-

LastHunter napsal(a):

Bez AJAXu (s vypnutým Javascriptem) to funguje?

Podívej se do Firebugu, jestli se něco odesílá (záložka Síť).

Máš tam ten jQuery plugin?

Bez AJAXu to funguje spravne. S Ajaxem to prekresli, ale nic nevypise. Pouzivam jquery.nette.js z prikladu.

Editoval pekinen (14. 7. 2009 15:35)

pekinen
Člen | 29
+
0
-

VYRESENO!!!

Omlovam se vsem. Nevim proc, ale jediny problem byl v tom, ze mi v definici pripojeni k DB chybelo:

	'charset'  => 'utf8',

Ted uz to vypisuje spravne :)

Jod
Člen | 701
+
0
-

Muhahaha, tak toto by ma zabilo :)
Ja som predchvíľou parsoval XMLka cez XPath do databázy a mal som podobný mrňavý preklep xD