0

このチュートリアルの手順に従って、Flash アプリから PHP アプリにデータを渡す方法として Zend AMF をセットアップしました。

http://codeigniter.com/forums/viewthread/180414/

したがって、ディレクトリ構造とそこに記載されているすべてのものがあります。これは私のゲートウェイコントローラーです:

class Gateway extends CI_Controller
{
        function __construct()
        {
                 parent::__construct();
                 $this->load->library('zend');

                 //root_folder + application + controllers + amf + services
                 define('SERVICES_FOLDER', APPPATH.'controllers/amf/services/');
        }

    public function index() 
    {

            $server = new Zend_Amf_Server();

            $server->setProduction(false);

            //$server->addFunction('testservice');

            $server->addDirectory(SERVICES_FOLDER);

            echo  $server->handle();
    }

}

APPPATH は /application/ であるため、SERVIES_FOLDER で定義されたパスは "/application/controllers/amf/services" であり、これは私のファイル 'testservice.php' が置かれている場所です。

フラッシュでそのサービスに接続しようとすると:

var gateway:String = "http://mysite.com/amf/gateway";
con.connect(gateway);
con.call("Testservice.getMessage", new Responder(onResult, onFault));

onFault メソッドを呼び出し、エラーを表示します。

「Testservice」という名前のプラグインがレジストリに見つかりませんでした。

Gateway.php の addDirectory() 行がどういうわけか問題だったと思います。興味深いことに、URL (mysite.com/amf/services/testservice) から testservice 機能にアクセスすることもできません。

ここで何が起こっているのかについて何か考えはありますか?

4

2 に答える 2

0

サービスコントローラーでparent::__construct()を使用すると、これに問題がありました。それを削除すると、問題はなくなりました。

于 2013-10-02T16:09:08.080 に答える
0

それを理解しました。

運が悪かった addDirectory メソッドを使用する代わりに、setClass メソッドを使用して、関数を持つ gateway.php ファイル内に別のクラスを作成しました。これで、フラッシュからこれらの関数に接続できるようになりました。

于 2011-09-02T19:55:08.390 に答える