リクエストにcom_ajaxを使用していますが、問題が発生しました。
AJAX=リクエストを行っているユーザーがログインしているかどうかを確認しようとしています。JFactory:: getUser()を呼び出すと、ゲストユーザーID = 0が返されます。同様にJApplication-> isAdmin()はfalseを返します。これは、com_ajaxが管理者側ではなくサイト側にあるためと考えられます。
Com_ajaxを使用して、誰かが認証されているかどうかを区別する方法はありますか?または、管理者側にcom_ajaxに相当するものはありますか?管理コンポーネントで独自のAjaxを作成する必要がありますか?
URLとPHP関数で、Ajaxタスクに正しい命名規則を使用していると仮定すると、次のようになります。
helper.php
_public static function myFunctionAjax()
{
}
_
Javascriptファイル
_var request = {
'option' : 'com_ajax',
'module' : 'mymodule',
'method' : 'myFunction',
'format' : 'raw'
};
$.ajax({
type: 'POST',
data: request,
success: function(response) {
// etc
}
});
_
myFunction
は、実行したいPHP関数(myFunctionAjax()
)と同じ名前を使用する必要があります。
唯一の違いは、PHP=関数には最後にAjax
が必要であることです。
次に、PHP関数内で、次のようにユーザーがログインしているかどうかを確認できます。
_public static function myFunctionAjax()
{
$user = JFactory::getUser();
if (!$user->guest)
{
// perform some magic
}
else
{
// Sorry, you must be logged in
}
}
_