#1 28. 10. 2009 19:01

Laethnes
Člen
Registrovaný: 13. 5. 2009
Příspěvky: 50

Handler jako třída s daty.

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 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)

Offline

 

#2 28. 10. 2009 20:00

Tomik
Nette Evangelist
Místo: Roztoky
Registrovaný: 20. 3. 2005
Příspěvky: 565
Web

Re: Handler jako třída s daty.

<?php
$obj = new Obj('adresa');

$texy->addHandler('linkURL', array($obj, 'myMethod'));
?>

??

Editoval Tomik (28. 10. 2009 20:01)

Offline

 

#3 28. 10. 2009 20:58

Laethnes
Člen
Registrovaný: 13. 5. 2009
Příspěvky: 50

Re: Handler jako třída s daty.

Tomik napsal(a):

<?php
$obj = new Obj('adresa');

$texy->addHandler('linkURL', array($obj, 'myMethod'));
?>

??

Aha, perfektní, díky ;)

Offline

 

#4 28. 10. 2009 21:55

Tomik
Nette Evangelist
Místo: Roztoky
Registrovaný: 20. 3. 2005
Příspěvky: 565
Web

Re: Handler jako třída s daty.

Laethnes napsal(a):

Aha, perfektní, díky ;)

Já si nebyl jistý, že jsem pochopil zadání, jsem rád, že jsem pomohl! :)

Offline

 

#5 30. 10. 2009 10:28

Laethnes
Člen
Registrovaný: 13. 5. 2009
Příspěvky: 50

Re: Handler jako třída s daty.

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 :).

Offline

 

Zápatí

Reklama: Školení PHP | Magento