RFC – rozšířit syntaxi parametru $destination v metodě LinkGenerator::link()
- m.brecher
- Generous Backer | 889
Ahoj,
odkazy lze v Nette vytvářet metodou link($destination) buďto presenteru, nebo LinkGenerátoru. Syntaxe parametru $destinationn je ale v LinkGenerátoru problematická, protože se liší od syntaxe použité v metodě stejného jména v presenteru:
Presenter a LinkGenerátor nepoužívají pro odkaz $destination stejnou syntaxi, dokonce co presenter uznává za platnou adresu, LinkGenerátor odmítá a naopak. To je pro vývojáře matoucí.
Ideální by bylo, kdyby LinkGenerátor používal stejnou syntaxi pro absolutní adresy jako Presenter. Aby nevznikl BC break, můžeme ke stávající syntaxi $destination v LinkGenerátoru jednoduše syntaxi používanou Presenterem přidat.
Řešením je přidat na začátek metody link() v třídě LinkGenerátor následující kód:
Po úpravě zdrojového kódu třídy LinkGenerator lze použít všechny 3 způsoby, což je ideální:
PR na githubu: https://github.com/…ion/pull/328
Poznámka: vzhledem k čerstvým změnám v nette/application a přidání aliasu pro $destination začínající znakem @ jsem kód pro PR poupravil takto:
Editoval m.brecher (10. 4. 2024 20:26)
- David Grudl
- Nette Core | 8254
Ve větvi 3.2-dev je generování odkazů v prezenterech a LinkGeneratoru sloučeno a syntaxe je shodná.