2012-02-15 6 views
0

これを半ダース試してみましたが、まだ動作していません。 Joomla 1.7.3をローカルマシンにインストールします。プラグインは何もしませんが、実際には何も破壊していません。私が知る限り、命名規則は大丈夫です。Joomla:onUserAfterを使用してプラグインを作成できません保存する

私がしようとしているのは、新しいユーザーのユーザーIDを持つデータベーステーブルに新しい行を挿入することです。テーブルは既に作成されており、SQLクエリーを調べて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; 
     } 
    } 
} 

ここには何かが分かりません。私は周りを見回していますし、私が試した解決策はうまくいきません。それは正しい場所にあり、プラグインマネージャの画面で見ることができます。誰かが私にこれに関するいくつかのアドバイスを与えることを望む。

答えて

1

Joomlaの1.6/7/2.5でこれを想定すると...、あなたは正しい場所、すなわち/プラグイン/ユーザー/ cnpluginupdate /いくつかのエラーは次のようにチェックして、あなたのデシベルのコードをラップはそれを持っている場合:

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; 
    } 
} 
  1. 現在、何が起こったとしてもtrueを返すので、エラーは報告されません。上記のように可能性のあるエラーをキャッチするtryを使用して...

  2. は、あなたはそれが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 
    } 
+0

私はこれを試しましたが、効果はありません。プラグインにエラーチェックコードを追加する方法がわからなかったので、それは素晴らしいですが、まだ何もしていません。この時点で、私は命名規則に何か間違っているかどうか疑問に思います。 – Cryan

+0

私は命名のものに戻ってきました。ファイルは/ plugins/user/cnpluginupdateにあります。ファイル名はplgusercnpluginupdate.phpです。クラスはplgUserCNPluginUpdateと呼ばれます。 – Cryan

+0

私はフロントエンドではなく、バックエンドにユーザーを追加することでこれをテストしています。これがonUserAfterSave関数と異なるかどうかはわかりません。 – Cryan