Při volání vlastní validační funkce nelze použít self::
- Šaman
- Člen | 2666
<?php
$form->addText('input')
->addRule(Form::INTEGER, 'Částka smí obsahovat jen číslice.')
->addRule('self::myValidateFce', 'Částka přesahuje povolený limit.');
?>
mi vyhodí výjimku:
Unknown operation 'self::myValidateFce' for control 'input'.
Když self přepíšu na název třídy, šlape to. Ale než jsem na to
přišel, docela to trvalo..
Používám
Nette Framework 1.0-dev (revision e6eaa61 released on 2010-05-01)
.
(Jen takový nápad: nemohla vy se verze Nette ukazovat na debugBaru?
Případně dá se zjistit pomocí nějaké fce frameworku?)
- Ondřej Mirtes
- Člen | 1536
self:: – to není žádná chyba Nette, PHP prostě neumožňuje sapsat callback v tomto tvaru :)
- v6ak
- Člen | 206
Ono to je celkem logické – předává se to jako řetězec a volá se to (obecně) dost možná hodně mimo místo vzniku. Aby něco takového mohlo fungovat, muselo by si PHP ke každému řetězci, který alespoň trochu připomíná callback a používá self, ukládat třídu, odkud pochází, což by byl IMHO dost velký hack. Už stačí současný systém callbacků – mnohem více by se mi líbilo něco stylu ClassName::MethodName::methodLink apod.
Jinak, pokud se chceš vyhnout závislosti na jméně třídy, použij __CLASS__.