0

助けてください、これは私が書いている最初のプラグインで、完全に迷っています。カスタムのGiveBadge()関数を使用して、joomla データベースのテーブルに情報を書き込んで更新しようとしています。関数は 2 つの異なる変数を受け取ります。最初の変数は$userIDで、2 番目の変数は数字300で、これをクラスの最後でgiveBadge(300)を使用して渡します。同時に、Joomla データベースの$userIDを比較して、Joomla サイトにログインしている現在のユーザーに番号300が与えられていることを確認します。

前もって感謝します。

<?php


     defined('JPATH_BASE') or die;


      class plgUserBadge extends JPlugin
      {
           public function onUserLogin () {
                $user =& JFactory::getUser();
                $userID =& user->userID;

                return $userID;
           }

           public function giveBadge ($userID, &$badgeID) {
                // Get a db connection.
                $db = JFactory::getDbo();

                // Create a new query object.
                $query = $db->getQuery(true);

                // Fields to update.
                $fields = array(
                    'profile_value=\'Updating custom message for user 1001.\'',
                    'ordering=2');

                // Conditions for which records should be updated.
                $conditions = array(
                    'user_id='.$userID, 
                    'profile_key=\'custom.message\'');

                $query->update($db->quoteName('#__user_badges'))->set($fields)->where($conditions);

                $db->setQuery($query);

                try {
                    $result = $db->query(); 
                } catch (Exception $e) {
                    // Catch the error.
                }es = array(1001, $db->quote('custom.message'), $db->quote('Inserting a record using insert()'), 1);

            }   

        }

     giveBadge(300);  //attaches to $badgeID    

    ?>
4

1 に答える 1

2

あなたのコードではうまくいきません:

  • すべてのコード (&) で参照による割り当てを削除できます。99% の場合、実際には必要ありません。
  • IDE を使用します(たとえば、PDT を使用した Eclipse)。コードの先頭には、& user->userID;任意の IDE がコード内のエラーやその他のものを見つけます。
  • 既存のプラグインを調べて、それらがどのように機能するかを理解してください。プラグインに関するドキュメントもここにあります。
  • メソッド onUserLogin() は、特定のイベントがトリガーされたとき (プラグインがアクティブ化されたとき)、Joomla によって自動的に呼び出されます。die("My plugin was called")プラグインが本当に呼び出されているかどうかを a で確認します
  • onUserLogin() 内で、すべてのビジネス ロジックを実行します。何かを返すことは想定されていません。true を返すだけです。現在、あなたの方法はまったく何もしません。しかし、$this->giveBadge() を呼び出して、ロジックを別のメソッドに移動できます。
于 2013-04-26T15:21:27.410 に答える