Ich schreibe ein paar Plugins, um Benutzerinformationen über eine API zu behandeln. Es gibt keine Standardprozesse, die ich gefunden habe, die das vollständig behandeln könnten, also verwende ich onAfterRoute, um die Komponentenmodellklassen zu überschreiben.Joomla überschreiben Benutzer Komponentemodell
Dies ist die Überprüfung nur, dass die Komponente = com_users und die Ansicht = Reset oder erinnern:
class plgSystemUseroverride extends JPlugin {
public function __construct(&$subject, $config = array()) {
parent::__construct($subject, $config);
}
public function onAfterRoute() {
$app = JFactory::getApplication();
$input = $app->input;
if('com_users' == $input->get('option') && 'reset' == $input->get('view') && !$app->isAdmin()) {
require_once(dirname(__FILE__) . '/user/reset.php');
}
if('com_users' == $input->get('option') && 'remind' == $input->get('view') && !$app->isAdmin()) {
require_once(dirname(__FILE__) . '/user/remind.php');
}
}
}
Die Dateien aus dem Benutzer-Komponente kopiert werden, und ich geändert ‚erinnern‘ für meine Prüfung: Methode processRemindRequest:
$return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $user->email, $subject . " TEST Subject", $body);
Die Modifikation funktioniert gut, wenn bearbeiten die Komponente-Dateien direkt, sondern als die Klassen-Plugin nicht außer Kraft gesetzt werden.