Je veux utiliser onContentAfterSave dans le backend de Joomla mais cela ne fonctionne pas.
Mon code est le suivant:
class plgContentTest extends JPlugin
{
public function onContentAfterSave($context, &$article, $isNew)
{
$option = JRequest::getVar('option');
if($option=='com_content'){
echo 'Test';
}
}
}
onContentAfterSave ne fonctionne pas sur le backend?
Si vous testez sur la sauvegarde, alors l'écho sur quelque chose peut ne jamais être vu comme presque certainement une redirection est déclenchée après la sauvegarde. Alors essayez d'ajouter une sortie; pour vérifier qu'il ne tire pas vraiment:
class plgContentTest extends JPlugin
{
/**
* Loads the application object
*
* @var JApplicationCms
* @since 3.2
*/
protected $app = null;
public function onContentAfterSave($context, &$article, $isNew)
{
$option = $this->app->input->get('option');
if ($option=='com_content')
{
echo 'Test';
exit;
}
}
}
Notez que JRequest est obsolète et vous pouvez maintenant injecter dans l'objet d'application Joomla en le déclarant en tant que propriété protégée.
plgContentTest
JPlugin
classetest.php
/plugins/content/test
test.xml
/plugins/content/test
Vous devriez vérifier le contexte, pas une demande directe:
if ($context != 'com_content.form') {
return true;
}
Vous pouvez trouver un exemple de plugin de contenu ici: / plugins/content/joomla
Vous devriez définir une variable article comme ceci $article
pas ça &$article
.
De plus, il serait bien pour vous de fournir la structure de répertoires de votre plugin.
La plupart des problèmes avec les plugins de contenu sont causés par le nom du plugin. S'il n'est pas nommé et installé correctement, Joomla ne peut pas le trouver et appeler onContentAfterSave .
Prenant Finder plugin comme exemple: