Poprosim o radu s komponentou a snippetmi

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

Ahojte. Vedeli by ste mi niekto prosim poradit?

Mam takuto komponentu…

<?php
	// ... Hlavna komponenta
	public function render()
	{
		$this->template->setFile('.../hlavna-komponenta.latte');
	}

	// ... Vedlajsia komponenta
	public function renderSec()
	{
		$this->template->setFile('.../vedlajsia-komponenta.latte');
	}

	// ... handler volany ajax-om
	public function handleTest()
    {
		/* ... nejaka logika ... */

		$this->redrawControl('tag');
    }
?>

… a potrebujem, aby ked sa spracuje handleTest, aby sa prekreslil snippet ‚tag‘ v sablone vedlajsia-komponenta.latte

Ked je dany snippet ‚tag‘ v sablone hlavna-komponenta.latte, tak vsetko funguje ako ma.

Predpokladam, ze problem je v tom, on tie snippety hlada len v render(). Je nejaky sposob, ako ho donutit hladat to v renderSec() ?

Dakujem za radu.

japlavaren
Člen | 404
+
+1
-

On to nehlada, ale pri handle vola metodu render a nie inu. Budes si !usiet spravit v render metode podmienku ktoru sablonu ma vypisvat. Sprav si v triede private property showSec, v handle si do nej nastav true a ak je true zobra v renderi tu druhu sablonu

vladimir.biro
Člen | 163
+
0
-

japlavaren, to je dokonale :) … super, dakujem.

Takze:

<?php
	private $useSec = false;

    // ... Hlavna komponenta
    public function render()
    {
		if ($this->useSec === true) {
			$this->template->setFile('.../vedlajsia-komponenta.latte');
		}
        $this->template->setFile('.../hlavna-komponenta.latte');
    }

    // ... Vedlajsia komponenta
    public function renderSec()
    {
        $this->template->setFile('.../vedlajsia-komponenta.latte');
    }

    // ... handler volany ajax-om
    public function handleTest()
    {
        /* ... nejaka logika ... */

		$this->useSec = true;

        $this->redrawControl('tag');
    }
?>

Jednoduche, genialne… dakujem este raz.

Editoval vladimir.biro (21. 9. 2017 18:54)

japlavaren
Člen | 404
+
0
-

Ak mas v renderSec nejaku logiku mozes zavolat v podmienke v metode render $this->renderSec()a return

vladimir.biro
Člen | 163
+
0
-

japlavaren napsal(a):

Ak mas v renderSec nejaku logiku mozes zavolat v podmienke v metode render $this->renderSec()a return

Presne tak nejako som to aj vyriesil, lebo v oboch funkciach som mal velmi podobny obsah.

Teraz ale este zapeklitejsia otazka :)

Co keby som z toho handleru chcel menit obe komponenty. Aj render() aj renderSec()

Ja som tu ukazku dost zjednodusil, ale v skutocnosti sa jedna o nakupny kosik eshopu.
Jeden je halvny kosik na samostatnej podstranke render() a druhy je prehladovy kosik, ktory sa nachadza v hlavicke webu. A ide mi o to, ze ked som na podstranke kosiku a upravim pocet kusov produktu v kosiku, tak chcem aby sa mi prepocitala cena v jednom aj druhom kosiku.

Vid: http://prntscr.com/go0fma

zakruzkoval som vsetky hodnoty, ktore sa maju zmenou poctu v inpute zmenit pricom sa jedna o dve komponenty. Resp jednu

{control basket}

a

{control basket:float}