Php Joomla覆盖用户组件模型
我正在编写一些插件,通过API处理用户信息。我发现没有任何默认进程可以完全处理这个问题,所以我使用onAfterRoute覆盖组件模型类 这只是检查组件=com_用户,视图=重置或提醒:Php Joomla覆盖用户组件模型,php,joomla3.0,Php,Joomla3.0,我正在编写一些插件,通过API处理用户信息。我发现没有任何默认进程可以完全处理这个问题,所以我使用onAfterRoute覆盖组件模型类 这只是检查组件=com_用户,视图=重置或提醒: class plgSystemUseroverride extends JPlugin { public function __construct(&$subject, $config = array()) { parent::__construct(
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');
}
}
}
这些文件是从users组件复制的,我为测试修改了“提醒”:
方法请求:
$return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $user->email, $subject . " TEST Subject", $body);
如果直接编辑组件文件,修改效果很好,但作为插件,这些类不会被覆盖。不管怎样,我已经找到了答案。删除视图并检查组件是否为“com_用户”就足够了。我还将JLoader设置为注册类:
public function onAfterRoute() {
$app = JFactory::getApplication();
if('com_users' == JRequest::getCMD('option') && !$app->isAdmin()) {
JLoader::register('UsersModelReset', dirname(__FILE__) . '/user/reset.php');
JLoader::register('UsersModelRemind', dirname(__FILE__) . '/user/remind.php');
}
}
没关系,我知道了。删除视图并检查组件是否为“com_用户”就足够了。我还将JLoader设置为注册类:
public function onAfterRoute() {
$app = JFactory::getApplication();
if('com_users' == JRequest::getCMD('option') && !$app->isAdmin()) {
JLoader::register('UsersModelReset', dirname(__FILE__) . '/user/reset.php');
JLoader::register('UsersModelRemind', dirname(__FILE__) . '/user/remind.php');
}
}