假設我們的專案文件夾為APP1,放在 web的根目錄下,把AMFPHP放到APP1中,其目錄結構為"WEBROOT\APP1\AMFPHP",首先要在設定"WEBROOT\APP1\AMFPHP\gateway.php":
//gateway.php文件設定
efine("PRODUCTION_SERVER", false);//主要是下面這一句,如果數據庫是用UTF8的就按這個寫法,注意你的PHP要支持iconv
include "globals.php";
include "core/amf/app/Gateway.php";
$gateway = new Gateway();
$gateway->setClassPath("services/"); //自己編寫的數據服務文件就是放在這裡
$gateway->setClassMappingsPath($voPath); //上面的基本不用改了
$gateway->setCharsetHandler("iconv", "UTF-8", "UTF-8");
//否則自己根據需要改 $gateway->setCharsetHandler("iconv", "數據庫文字編碼", "輸出文字編碼");
接着是FLEX端的設定:
- 在flex專案中加入一名為services-config.xml的文件,注意不能是services_config.xml,內容如下:
<?xml version="1.0" encoding="UTF-8"?>
注意粗體部份的內容因自己的情況按需更改
<services-config>
<services>
<service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="amfphp">
<channels><channel ref="my-amfphp"/></channels>
<properties><source>*</source></properties>
</destination></service></services>
<channels>
<channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://YOUR_SERVER/APP1/amfphp/gateway.php" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition></channels>
</services-config>
另外,endpoint的URL可以使用相對地址,但不是相對本文件的地址,而是相對於WebRoot的地址,例如:"/APP1/amfphp/gateway.php",這一點搞暈了很多人。 - 設定Flex Builder的Compiler Arguments
在Flex Builder Navigator Panel(即列出目前開發中專案的Panel),在flexTree旁Right Click選Properties,選Flex Compiler,在Additional compiler arguments加-services services-config.xml,因為兩個XML files是在index.mxml放在同一個Folder,所以不用加路徑。-locale en_US -services services-config.xml
如果在services-config.xml用了{context.root},則要再加-context-root flexTree,否則不用了。 - 編寫PHP數據服務文件放到"WEBROOT\APP1\AMFPHP\services"文件夾中
沒有留言:
張貼留言