persistentni parametr v komponente

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

Ahoj, mam komponentu „mainSearchTabControl“ s vyhledavacim formularem a potrebuju mu predat hodnoty z url takze pres parametr @persistent, staci definovat tento parametr pouze v tovarnicce nebo ho musim definovat i v presenteru?

mam:
presenter

class VstupniTelefonatyPresenter
    extends \App\AdminModule\Presenters\InPresenter
{

.....

    /* ACTIONS */
    function actionDefault()
    {
        $this->nadpisSekce = 'Seznam vstupních telefonátů';
        $this->submenu['seznam']['active'] = true;


        $this['mainSearchTabControl']->nastavitForm();

......

a komponentu:

class MainSearchTabControl
		extends \App\AdminModule\Components
{
....
/** @persistent */
    public $sch_jmeno = '';

.....


    /* */
    function nastavitForm()
    {
        $form = $this['search_Main_Form'];

        $vyhlArr = array(
            'sch_jmeno');

        foreach($vyhlArr as $v1)
        {
            // echo $v1.' - '.$this->$v1;
            $form[$v1]->setDefaultValue($this->$v1);
        }
    }

a url:
.....vstupni-telefonaty/?sch_jmeno=jan

ale v komponente $this->sch_jmeno nezobrazi nic :(

CZechBoY
Člen | 3608
+
0
-

Zavolej nastaviForm az v attached komponenty.

Editoval CZechBoY (16. 3. 2017 8:51)

vosy
Člen | 525
+
0
-

CZechBoY napsal(a):

Zavolej nastaviForm az v attached komponenty.

kdy to prosim te je?

kdyz mam v komponente:

/* RENDER */
    function render()
    {

        echo $this->sch_jmeno;

tak mi to taky nevypise

Editoval vosy (16. 3. 2017 8:57)

CZechBoY
Člen | 3608
+
0
-

@vosy a vkladas tam nekdy neco?

vosy
Člen | 525
+
0
-

CZechBoY napsal(a):

@vosy a vkladas tam nekdy neco?

Dobrá otázka :D

url mam .....vstupni-telefonaty/?sch_jmeno=jan

takze teoreticky by se tam melo vlozit z URL

pokud nadefinuju tuto promenou jako persistent v presenteru tak vse frci jak ma.
Otazka zni jestli si ti zasirat presenter nebo tu promenou mit nadefinovanou jen v Komponente ktera s ni pracuje.

Nevimjestli to tak lze resit. DIX

CZechBoY
Člen | 3608
+
0
-

Ta url je špatně, nevidim tam jméno komponenty (ta url nastavuje parametr jen v presenteru).
Jak se to do tý url dostane? Měl bys správně zapisovat do property v komponentě a Nette se potom samo postará o přenesení.

vosy
Člen | 525
+
0
-

CZechBoY napsal(a):

Ta url je špatně, nevidim tam jméno komponenty (ta url nastavuje parametr jen v presenteru).
Jak se to do tý url dostane? Měl bys správně zapisovat do property v komponentě a Nette se potom samo postará o přenesení.

ahahaha to asi bude ono, jak by mel vypadat parametr kdyz jmeno komponenty je „aaa“ treba

ve formulari mam prikaz:

$vals['sch_jmeno'] = 'karel';
$presenter->redirect('default', $vals);

da se do toho redirektu nejake implementovat nazev komponenty aby se url vygenerovalo samo?

Editoval vosy (16. 3. 2017 10:37)

CZechBoY
Člen | 3608
+
0
-

@vosy Zkus to takhle

$this->sch_jmeno = 'karel'; /* vložim hodnotu do persistentní proměnné */
$presenter->redirect('default'); /* tady už nic nevkládám, zařídí Nette */