質問: カスタムコンポーネントのユーザー情報テーブルのユーザー情報を更新する最善の方法は何ですか? 一部のユーザー情報を個別のテーブルに保存するカスタムコンポーネントを開発しました。ユーザーが管理セクションまたはフロントエンドから削除または更新されたときに、ユーザー情報を保存/更新したいと考えています。
回答: ユーザープラグインを使用してデータを保存する必要があります。データは非常に簡単に書き込むことができます。例は creating a profile plugin にありますが、例には必要以上のものが含まれている場合があります。コードが入るイベントはonuseraftersaveとonuserafterdeleteであり、 plugin/events/user に記載されています。これらのイベントは、ユーザーが管理者またはフロントエンドで保存または削除されたときに発生します。プラグインの根性はこれだろう:defined('_jexec') or die; class plgusermyplugin extends jplugin { protected $app; protected $db; public function onuserafterdelete($user, $success, $msg) { if (!$success) return false; $query = $this->db->getquery(true) ->delete($this->db->quotename('#__mytable')) ->where($this->db->quotename('userid') . ' = ' . (int) $user['id']); $this->db->setquery($query)->execute(); return true; } public function onuseraftersave($user, $isnew, $success, $msg) { if (!$success) return false; // update your table here if ($isnew) { // new user }else{ // existing user } } }