nefunkční metoda link – negeneruje správný odkaz

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

Zdravím,

narazil jsem na problém s metodou link().

			$link = $presenter->link($path, $id_click);
			echo $path . " - "; echo $id_click . " - "; die($link);

mi vypíše řetězec

Admin:formsQuery – 28 – /nette/jednoduche_stranky/www/admin/forms-query

Problém je v tom, že odkaz by měl ještě mít na konci

?id_click=28

Zkoušel jsem sestavit link i tímto způsobem, výsledek je bohužel stejný, chybí id_click

$link = $presenter->link($path, array("id_click" => $id_click));

Nemůžu přijít na to co dělám špatně.
Díky za pomoc.

Tomáš Votruba
Moderator | 1114
+
0
-

Ahoj,

pošli presenter (pokud je velký, tak externě (gist…)) + jaké máš routy. Toto vypadá správně, možná v nich bude něco špatně.

Pokud to zkoušíš zadat v šabloně, funguje?

<a n:href="this, id_click => $id_click">Test</a>
Jeriiii
Člen | 21
+
0
-

A mám poslat presenter, nad kterým se metoda link používá nebo presenter, kam link odkazuje?

Moje routy jsou tady, ale ty to asi neovlivní

// Setup router
$router = new RouteList;

$container->router = $router;
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('page/news/', array(
    'presenter' => 'Page',
    'action' => 'news',
	'id' => NULL
));
$router[] = new Route('page/<id>/', array(
    'presenter' => 'Page',
    'action' => 'default',
	'id' => '<id>'
));
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

Tady je akce v prezenteru na kterou to odkazuje

	public function actionFormsQuery($id_click)
	{
		$this->template->id_click = $id_click;
			$this->template->forms = $this->context->createForms_query();
	}

A tady je formulář, kde se tvoří link – presenter si předávám jako parametr

class BaseForm extends Form
{
	public function __construct(IContainer $parent = NULL, $name = NULL)
	{
		parent::__construct($parent, $name);
	}

	/**
	 * zaznamenani odeslani mailu do specialni tabulky
	 */

	public function registerNewSendForm($path, $id_form, $presenter, $name, $id_click) {
		if($path == "standart") {
			$form = $presenter->context->createForms()
						->find($id_form)
						->fetch();
			$link = $presenter->link("Admin: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()
				));
	}
}
Jeriiii
Člen | 21
+
0
-

Ještě dodatek

V šabloně to přímo vyzkoušet nemůžu, protože to vlastně vůbec přes ni nejde, ale když to dám do jiné šablony, tak to funguje. Tedy

<a n:href="Admin:formsQuery, id_click => 2">Test</a>

vygeneruje správný link.