Formulare: zmena klicu pro getDefault() a onSubmit()
- ras
- Člen | 135
Ahoj vsem,
pres model si vytahnu data z DB. Mohl bych je v presenteru vlozit pres
$form = $this->getComponent('uzivatelEditForm');
$form->setDefaults((array) $row);
ale protoze nechci, aby ve formulari byly videt nazvy sloupcu z DB, tak potrebuji klice vkladaneho pole upravit. To neni problem, mam prevodni pole
// prevodni tabulka, tj. parametry z DB tabulky na polozky ve formulari
$sql2form["uzivatelske_jmeno"] = "uname";
$sql2form["uzivatelske_heslo"] = "upass";
...
pres jeden foreach $row prozenu a je to ve formulari. Uplne stejne to pak udelam pri vracenych datech z formulare po onSubmit().
Dotazy:
1.) verim, ze to jde udelat nejak elagantneji … ale nevim jak?
2.) chtel bych mit konverzni tabulku jen jednu a pouzit i treba i vicekrat,
tj. na vice mistech kodu → kam a jak nejvhodnej ji dat?
(kdyby to nebyl formular pres komponentu, tak si na to udelam HELPER, ale
takto nevim)
- ras
- Člen | 135
Po trech dnech bez odpvedi dochazim k zaveru, ze bud je to uplne pitomy dotaz (skoda, ze mi to nekdo nenapsal) a nebo je moje reseni to „spravne“ (a opet skoda, ze mi to nikdo nenapsal ;o).
Nakonec jsem konverzni pole umistil primo do modelu misto puvodniho umisteni v presenteru a provedl jej v obecnem duchu.
tj. AdminModel.php
function konverzeDbTable2Form($tableName)
{
// prevodni tabulka, tj. parametry z DB tabulky na polozky ve formulari --> "DB" => "FORM"
switch ($tableName)
{
CASE "tabulkaUzivatele":
$sql2form["uzivatelske_jmeno"] = "uname";
$sql2form["uzivatelske_heslo"] = "upass";
$sql2form["aktivni"] = "is_active";
break;
}
return $sql2form;
}
function konverzeDbColumn2Form ($tableName, $key)
{
$x = $this->konverzeDbTable2Form($tableName);
return isset($x[$key]) ? $x[$key] : $key;
}
function konverzeForm2DbColumn ($tableName, $key)
{
$x = array_flip($this->konverzeDbTable2Form($tableName));
return isset($x[$key]) ? $x[$key] : $key;
}
a tak je mozne toto aplikovat v jakemkoliv presenteru, coz v puvodnim navrhu ne.
Neda mi to se nezeptat … takze … napada nekoho z vas neco elegantnejsiho?
- studna
- Člen | 181
ras napsal(a):
Neda mi to se nezeptat … takze … napada nekoho z vas neco elegantnejsiho?
$row = new XRows( $table );
return (string) $row['name']; // vrati jmeno sloupce 'name'
return $row['name']->crypt; // vrati zasifrovane jmeno sloupce
return $row->encrypt( $row['name']->crypt ); // vrati objekt XRow
Jen jsem trošku nastínil to elegantnější řešení. A jaký to má vlastně smysl?
- ras
- Člen | 135
Diky za inspiraci.
Proc? .. to jsem jiz psal, proste me vadi, aby bylo z formulare mozne vycist nazvy sloupcu v DB tabulkach. Nerikam, ze je to obecne nebezpecne, ale me to proste vadi. Beru, ze je to zbytecne ulehcovani situace cloveku, ktery chce skodit. Me to v kodu nijak neomezi (pravda cryptovane nazvy se programatorovi hure ladi, ale to je jen otazka svazani cryptovani/necryptovani s DEBUG::DETECT) a pripadnemu skodici to rozhodne neulehci.
Ale mozna je to jen moje hloupost a neznalost … ci jinak receno paranoia.