nefunkční metoda link – negeneruje správný odkaz
- Jeriiii
- Člen | 21
Dobrý den,
narazil jsem na problém v metodě link. Jde o to, že při vygenerování odkazu se mi vygeneruje odkaz bez posledního parametru.
Při napsání
$link = $presenter->link("Admin:Forms:formsX", array("id_form" => $form->id, "type" => $form->type, "id_click" => $id_click));
Se mi vygeneruje odkaz bez parametru id_click
/nette/jednoduche_stranky/www/admin.forms/forms-x?id_form=1&type=2
mělo by se vygenerovat
/nette/jednoduche_stranky/www/admin.forms/forms-x?id_form=1&type=2&id_click=11
Proměnná id_click je naplněná tak jak být má. Dříve jsem používal
jen dva parametry pro tento odkaz, třetí (id_click) jsem doplnil až nyní.
Cache paměť jsem smazal. Celkem jsem ho doplnil do tří rendrů. Můžete mi
poradit, kde dělám chybu, popřípadě jestli to mám nahlásit jako chybu
Nette? Problém se už řešil zde a nevyřešil.
odkaz
Přikládám metodu formuláře ve které generuji odkaz
public function registerNewSendForm($path, $id_form, $presenter, $name, $id_click) {
if($path == "standart") {
$form = $presenter->context->createForms()
->find($id_form)
->fetch();
die($id_click);
$link = $presenter->link("Admin:Forms:formsX", array("id_form" => $form->id, "type" => $form->type, "id_click" => $id_click));
$name = $form->name;
}else{
$link = $presenter->link($path, array("id_click" => $id_click));
// echo $path . " - "; echo $id_click . " - "; die($link);
}
$presenter->context->createForm_new_send()
->insert(array(
"path" => $link,
"name" => $name,
"date" => new DateTime()
));
}
a render pro který se odkaz generuje
public function renderFormsX($id_form, $type, $id_click)
{
$this->template->id_click= $id_click;
$this->template->type = $type;
switch ($type)
{
case "1":
$this->template->forms = $this->context->createForms1()
->where("id_form", $id_form);
break;
case "2":
$this->template->forms = $this->context->createForms2()
->where("id_form", $id_form);
break;
case "3":
$this->template->forms = $this->context->createForms3()
->where("id_form", $id_form);
break;
}
}
- Panda
- Člen | 569
Kdyby se někdo setkal s podobným problémem:
Včera jsme to ladili a zjistili jsme, že předávaný
$id_click
byl ve skutečnosti objekt typu ActiveRow
.
Jeho obsahem mělo být ID záznamu vloženého do databáze, ale metoda
insert()
z Nette\Database
vrací celý objekt řádku.
Navíc má jako podpásovku nadefinovanou metodu __toString()
která to ID vrátí, takže při různých výpisech se ID zobrazovalo
normálně, ale metoda link()
jej ignorovala. Co by taky měla
dělat s objektem v adrese, že?