Signál a podporou složených primárních klíčů – proměnné množství parametrů nebo ‚id‘ jako „array“?

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

Možná už to budu míž vyřešené, než někdo odpoví, ale stejně by mě zajímalo, jak řešíte předávání složených primárních klíčů do singnálu komponenty.

Filip Procházka
Moderator | 4668
+
0
-

Asi bych to nekomplikoval a generoval si odkaz ve tvaru

/foo?component-id=10,35

(idčka oddělená čárkou)


Na druhou stranu. Pokud potřebuji hodnotu z tabulky, která závisí na dvou ID…

Mám třeba project_id a user_id a protože se struktura zanořuje, tak mi z toho přirozeně vzniká

/foo?projectId=10&userId=35
# nebo
/foo/project-10/user-35

A protože většinou jsou i persistentní, tak pak jen zavolám signál nad presenterem/komponentou a IDčka jsou jasná.

LeonardoCA
Člen | 296
+
0
-

super, dík za tip, potřebuji rozšířenou variantu č.1, protože jde o komponentu, která může zpracovávat libovolné data, tj vůbec nevím dopředu jaké jsou id a jestli má primaryKey 1,2 nebo víc sloupců a ani jména sloupců, tj. musím si do parametru nějak zakódovat i názvy id…

abych to ještě upřesnil, jde o základní komponentu/builder „gridu“ a formulářů a tlačítka chci generovat nějak takto

    public function addEditButton($control, $signal = 'Edit')
    {
        $this->AddContent(Html::bsButton('a', ' Edit ', 'btn-mini btn-primary', Html::bsIconw('edit'))
                        ->href($control->lazyLink($signal, $this->primaryKey))
        );
        return $this;
    }

přičemž $this->primaryKey jsem předefinoval na pole

Dodatek:
Takže buď potřebuji mít v ‚id‘ serializované pole a nebo generovat perzistentní parametry on runtime…

Řeším to vlastně proto, že jsem narazil na chybu při generování odkazů, „Passed more parameters than method foo::handleEdit() accepts“ a nepřišel na to jak definovat v php unlimited number of parameters, tak aby to kontrola v nette vzala. Tj. zřejmě mi zbývá jedině serializovat pole…

Editoval LeonardoCA (13. 12. 2012 1:55)

stekycz
Člen | 152
+
0
-

Pokud by to bylo možné, možná bych zkusil přepsat metodu getPersistentParams

Zavolat rodiče a na základně informací z $this->primaryKey vracet název persistentních proměných. Ale píšu to dost na blind, takže jestli to má další omezení moc netuším takhle z fleku…