2

AJAX クエリに使用する PHP スクリプトがありますが、Joomla の (2.5) フレームワークの傘下で動作できるようにして、セッション ID、ユーザー ID などを利用できるようにしたいと考えています。

例えば:

$(function () {
 $.ajax({                                     
   url: 'ajax.php',   //the script to call to get data                     
   dataType: 'json'        //data format     
   ...
 });
}); 

ajax.php には次のようなコードがあります。

$user =& JFactory::getUser();

私が理解していることから、標準の Joomla コンポーネントに対して AJAX/JSON 呼び出しを行うのが最善です。私は MVC コンポーネントの開発についてはあまり知りませんが、私がやりたいことにはやり過ぎです。

他に使用できるものはありますか?

4

3 に答える 3

4

コンポーネントを作成するとview、たとえば生のクエリ用に新しいものを作成compoments/com_yourcomponent/views/ajax/view.raw.phpし、そこにすべてのロジックと出力を配置できます。URLは次のようになります。index.php?option=com_yourcomponent&view=ajax&format=raw

また

controller.php印刷後の情報で新しいメソッドを作成できexit()、URLは次のようになりますindex.php?option=com_yourcomponent&task=ajax

于 2012-07-12T22:14:38.260 に答える
2

カスタムファイルを作成してJoomlaスクリプトに追加する必要はありません。ajaxリクエストを処理するために必要なのはコントローラーだけです。ビューも必要ありません(一方向)。

ajax呼び出しは次のようになります。

$(function () {
 $.ajax({                                     
   url: 'index.php?option=com_<component_name>&no_html=1task=<controller_name>.<controller_action>',  //not_html = 1 is important since joomla always renders it's default layout with menus and everything else, but we want the raw json output            
   dataType: 'json' //data format     
   ...
 });
}); 

そしてあなたのコントローラー:

    /*
    * @file admin/controller/<controller_name>.php
    */

class <component_name>Controller<controller_name> extends JController
{

        public function <controller_action>()
        {

         //do something
         $respnse['message'] = 'Your message for the view';
         die(json_encode($reponse));
        }
    }

...

これは、それがどのように行われるかの一例にすぎません。

于 2012-12-17T16:45:01.423 に答える
2

これは、Joomla Platformを介して絶対に可能です。以下に示す例は、実際には J1.5 用ですが、含まれているファイルを調整することで J2.5 に簡単に適応できます。

  1. 以下に示すように、含める joomla プラットフォーム ファイルを作成します。
  2. そのファイルをスクリプトに含めます
  3. 関数に使用できるようになった Joomla 環境を使用します。

もう 1 つの強力な推奨事項は、カスタム スクリプトの代わりに ReSTful API を実装することです。Luracast Restlerを使用すると、非常に簡単です。約 10 分で起動して実行し、以下に示すように Joomla フレームワークを追加し、1 時間以内に AJAX 呼び出しを使用して非常に柔軟な Joomla ベースの API をサイトに作成しました。私に関する限り、最高の開発時間は何年にもわたって費やされました。

yourscript.php

require_once('joomla_platform.php');
/* Get some of the available Joomla stuff */
$config = new JConfig(); 
$db = &JFactory::getDBO(); 
$user =& JFactory::getUser();
if($user->gid <25) {
    die ("YOU CANT BE HERE");
}
echo "<pre>".print_r($config,true)."</pre>";

joomla_platform.php

<?php
    /* Initialize Joomla framework */
    if (!defined('_JEXEC')) {
        define( '_JEXEC', 1 );
        //        define('JPATH_BASE', dirname(__FILE__) );
        define ('JPATH_BASE', "c:\\wamp\\www");
        define( 'DS', DIRECTORY_SEPARATOR );
        /* Required Files */
        require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
        require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
        /* To use Joomla's Database Class */
        require_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php' );
        require_once ( JPATH_LIBRARIES.DS.'joomla'.DS.'import.php'); // Joomla library imports.
        /* Create the Application */
        global $mainframe;
        $mainframe =& JFactory::getApplication('site');
    }
?>
于 2012-07-12T15:53:06.817 に答える