$presenter->link(), {link}, {plink} rozdíl

- simPod
- Člen | 383
Chci se zeptat, jaky je rozdil mezi temito zapisy:
<a href="{$presenter->link('this',array('page'=>2))}">{$product->product_name}</a>
<a href="{link 'this', array('page'=>2)}">{$product->product_name}</a>
<a href="{plink 'this', array('page'=>2)}">{$product->product_name}</a>
První funguje, druhy a treti pise
error: Unable to pass parameters to action 'blablabla', missing corresponding method.
Diky

- Vojtěch Dobeš
- Gold Partner | 1316
První a třetí zápis by měl vést k totožnému výsledku. Druhý zápis by byl totožný s:
$control->link('this', array('page' => 2));
Nevím, jestli to může i způsobovat onu chybu, ale destinace (v tomto
případě this) se nikdy neuvádí s uvozovkama okolo. Pro
úplnost, {link} se používá v základních šablonách pohledů
chová úplně stejně jako {plink}, protože v nich
$control == $presenter. {plink} existuje kvůli
komponentám (extends UI\Control), kde $control je
v šabloně instance komponenty, takže odkaz na presenter je třeba volat nad
$presenter, od čehož je právě {plink}.
Editoval vojtech.dobes (6. 5. 2012 15:24)

- Vojtěch Dobeš
- Gold Partner | 1316
Zkus ukázat odpovídající presenter/komponentu, ke které ta šablona patří.

- simPod
- Člen | 383
v podst. se jedna jen o toto:
{block content}
<a href="{plink 'this', array('page'=>2)}">test</a>
{/block}
<?php
namespace FrontModule;
class MyPresenter extends BasePresenter {
/** @persistent */
public $slug;
/** @persistent */
public $page;
function startup() {
parent::startup();
$this->setView('default');
}
function renderDefault() {
}
}

- Vojtěch Dobeš
- Gold Partner | 1316
Aha, tak určitě stačí použít {link} (protože je to
šablona pro view, nikoliv pro komponentu), respektive n:href, což
je jen atributová
kratší varianta.
Jenom netuším, proč ti to hlásí blablabla, kde se ten
řetězec bere? To z tvého kódu nevyplývá.

- Tetragramat
- Člen | 3
duke napsal(a):
Nepíše se:
{plink 'this', array('page'=>2)}ale
{plink this, page => 2}
Bylo by dobré tohle doplnit do dokumentace, protože tam chybí. Právě jsem řešil stejný problém a po hodině zkoušení různých možností, hledání v dokumentaci a na foru jsem našel tuhle spásu.