Oznámení
Handler jako třída s daty
před 10 lety
- Laethnes
- Člen | 53
Potřebuju všechny odkazy upravit, takže používám klasické handlery:
<?php
// handler jako funkce:
$texy->addHandler('linkURL', 'myMethod');
// handler jako metoda tridy
$texy->addHandler('linkURL', array('myClass', 'myMethod'));
?>
Jenže, co když chci použít nějakou konkrétní instanci třídy? Jde o to, že mám na stránce něco jako „TextBox“ – objekt, jehož text lze editovat. Každý textbox má vlastní název, který jej identifikuje a zároveň funguje jako název složky, v níž se nachází soubory k němu přiřazené. A aby uživatelé nemuseli moc co řešit, používají texy a v ní rovnou názvy souborů. Nechci po nich něco tak příšerného, jako je znalost adresy :3. Problém je v tom, že potřebuji třídu handleru, která v sobě obsahuje údaj o tom do jaké složky má odkazovat.
<?php
class CMyHandler
{
private $dir = NULL;
public function __construct($dir)
{
$this->dir = $dir;
}
public function MyHandler(...)
{
// Pouzij $this->dir na upravu relativnich odkazu
}
}
?>
A tedy potřebuji abych já vytvořil danou instanci, a ne texy. Bohužel, v manuálu jsem nic takového nenašel. A přes globální proměnné se mě to nechce moc dělat, protože těch textboxů může být na stránce víc.
A pak ještě jeden dotaz: chápu správně, že texy neumožňuje jednoduše a skrz jedinou metodu upravovat takto všechny odkazy? Hledal jsem na netu a nenašel jsem nic, jen lidi, kteří k tomuto závěru došli, takže musí dělat hromady handlerů kvůli úpravě odkazů…
EDIT:
Jo, a nelze to dělat přes nastavení „image root“ nebo tak. Jednak proto, že se nejedná je o obrázky a hlavně proto, že TextBox může mít různá práva. Proto se odkaz na soubor převede na odkaz na PHP script, který ověří práva až pak případně (pomocí FileDownloaderu) odešle soubor.
Editoval Laethnes (28. 10. 2009 19:03)
před 10 lety
- Tomik
- Nette Evangelist | 489
<?php
$obj = new Obj('adresa');
$texy->addHandler('linkURL', array($obj, 'myMethod'));
?>
??
Editoval Tomik (28. 10. 2009 20:01)
před 10 lety
- Laethnes
- Člen | 53
Tomik napsal(a):
<?php $obj = new Obj('adresa'); $texy->addHandler('linkURL', array($obj, 'myMethod')); ?>
??
Aha, perfektní, díky ;)
před 10 lety
- Tomik
- Nette Evangelist | 489
Laethnes napsal(a):
Aha, perfektní, díky ;)
Já si nebyl jistý, že jsem pochopil zadání, jsem rád, že jsem pomohl! :)
před 10 lety
- Laethnes
- Člen | 53
Tomik napsal(a):
Laethnes napsal(a):
Aha, perfektní, díky ;)
Já si nebyl jistý, že jsem pochopil zadání, jsem rád, že jsem pomohl! :)
Eh, promiň. Občas se asi špatně/nepřesně vyjádřím. Nicméně díky za pomoc :).