尝试了六种不同的方法,但还是没有用。本地机器上的Joomla 1.7.3。这个插件什么也不做,但实际上还没有破坏任何东西。据我所知,命名约定没问题。
我要做的是用新用户的userid在数据库表中插入一个新行。表已经创建,我检查了SQL查询,以确保它正常工作。
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
// Import library dependencies
jimport('joomla.plugin.plugin');
class plgUserCNPluginUpdate extends JPlugin
{
function onUserAfterSave ($user, $isnew, $success, $msg)
{
if (!$success)
{
return false;
}
if ($isnew)
{
$db = JFactory::getDbo();
$db->setQuery(
'INSERT INTO `#__cnuser_cginfo`(`RecordID`,`UserID`) VALUES (NULL,'.(int) $user['id'].')'
);
$db->Query();
return true;
}
}
}
我是不是漏掉了什么明显的东西?我一直在四处寻找,我尝试过的任何解决方案都是行不通的。它在正确的地方,我可以看到它的插件管理屏幕。希望有人能在这方面给我一些建议。
发布于 2012-02-16 00:00:21
假设这是在Joomla 1.6/7/2.5.如果您将其放在正确的位置,即/plugins/user/cnpluginupdate/将db代码包装在一些错误检查中,如下所示:
try
{
$db = JFactory::getDbo();
$db->setQuery(
'INSERT INTO `#__cnuser_cginfo`(`RecordID`,`UserID`)
VALUES (NULL,'.(int) $user['id'].')'
);
if (!$db->query()) {
throw new Exception($db->getErrorMsg());
}
catch (JException $e)
{
$this->_subject->setError($e->getMessage());
return false;
}
}
try
来捕获一个可能的错误.if (!$success)
-通常在执行任何工作之前您都会检查所有的输入,并且只有在代码遇到错误时才返回false
。例如:
function onUserAfterSave($data, $isNew, $result, $error)
{
$userId = JArrayHelper::getValue($data, 'id', 0, 'int');
if ($userId && $result && isset($data['profile']) && (count($data['profile'])))
{
// then 'try' your code here
}
https://stackoverflow.com/questions/9302757
复制相似问题