ok ci siamo.. allora, il tuo codice è valido, solo che volevo usare lo stesso sistema che usa Joomla, un semplice field di type= captcha e con validation captcha. Sai che mi son letto metà framevork e non l'ho capito?

.. però so come ci si arriva e voglio implementare lo stesso sistema.
il plugin recaptcha è un normalissimo plugin che potrebbe aver scritto chiunque, quindi faccio finta di averlo scritto io e di volerlo implementare nel mio componente, come faccio?...
Allora se si apre il file si vedono in pratica tre trigger: onInit, onDisplay e onCheckAnswer
Vediamo come "intercettarli" nel nostro componente, per qs esempio, nella view.
Nella view html del form importiamo il plugin recaptcha
JPluginHelper::importPlugin('captcha', 'recaptcha');
e creiamo un instanza del dispatcher
$dispatcher = JDispatcher::getInstance();
- onInit non fa altro che fare la request http a recaptcha e google usando un api a cui accedi con le key ottenute; le invia e google ti restituisce la finestrella e tutti i suoi ammennicoli.
Quindi per usare quel trigger
$dispatcher->trigger( 'onInit');
Non serve vedere nulla perchè non restituisce nulla di utile alla vista, solo lo script che si occupa dell'handling del dom.
Potete controllare guardando il sorgente della pag html generata.
a noi serve il trigger onDisplay che sarà quello che diventerà parte del nostro oggetto per renderlo disponibile al template.
E' ne più ne meno di un tag che serve allo script di onInit... un po' come succede quando si include una mappa di google
Quindi:
$captcha = $dispatcher->trigger('onDisplay');
se fate un print di $captcha vedete il vostro modulino, se lo volete rendere disponibile al template diverrà un
$this->captcha=$captcha
L'ultimo trigger occorre per la verifica dell'esattezza del testo inserito e darà un return booleano ed andrà usato nello stesso modo per quello scopo.
Ora... che serve tutto ciò che ho detto? ... a capire cosa fanno (molto probabilmente) quei metodi postati da Giovi.
in pratica se allo stesso modo di cui sopra, nella view usate la classe JCaptcha:
$captcha=JCaptcha::getInstance('recaptcha')->display('recaptcha', 'recaptcha');
poi, esempio, dove controllate il form:
// Check for request forgeries.
JRequest::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
$captcha=JCaptcha::getInstance('recaptcha')->checkAnswer();
se $captcha è false... fate qualcosa.
con una riga ottenete lo stesso risultato

M.