2012-01-31 1 views
0

AS3 кодалитье из FLEX на PHP

<fx:Declarations> 
    <!-- this is the RemoteObject used to make the RPC calls --> 
    <mx:RemoteObject id="myRemote" destination="MyService" source="MyService" 
     endpoint="http://localhost/amfphp/gateway.php"     
      showBusyCursor="true"/> 

</fx:Declarations> 

protected function button1_clickHandler(event:MouseEvent):void 
{ 
    var aut:VOAuthor; // value object class 
    aut = new VOAuthor(); 
    aut.id_aut = 3; 
    aut.fname_aut = "test"; 
    aut.lname_aut = "123"; 
    myRemote.saveData(aut); 
} 

Receving PHP код

public function saveData($author) 
{ 
    $mysql = mysql_connect("localhost", "mx112", "xxxxxx");   
    mysql_select_db("flex360");  
    $query = "INSERT INTO authors (fname_aut, lname_aut) VALUES ('".$author->fname_aut."', '".$author->lname_aut."')";   
    $result = mysql_query($query);     
    return $author; 
} 


<?php 
class VOAuthor { 
public $id_aut;  
public $fname_aut;  
public $lname_aut;   
var $_explicitType="org.corlan.VOAuthor";} 
?> 

Flex ответ Сетевой монитор: Сырое вид

{lname_aut=123, _explicitType=org.corlan.VOAuthor, fname_aut=test, id_aut=3} 

, но если я делаю это в конце php-код

return $author->lname_aut; 

ответ сетевого монитора NULL

поэтому проблема в том, что я могу распечатать массив, но как передать массив tht известному типу php? Через 5 дней я финналы вычислил flex и mysql, используя amfphp, кто-нибудь, пожалуйста, помогите?

+0

tx @pkyeck Я попробую ваш код, если бы попробовал этот $ author ['fname_aut'], это сработало для меня, но поскольку я использую простой пример его хорошо, как о сложных системах система счетов-фактур, которые я мог бы отправить нескольким классам в один удаленный запрос. Как обрабатывать данные за это время? Помощь – Fara

ответ

0

если вы используете AMFPHP и флэш вы должны зарегистрировать свои виртуальные организации:

import org.corlan.VOAuthor; 
// ... 
registerClassAlias("org.corlan.VOAuthor", VOAuthor); 

только тогда PHP распознает объекты, которые вы посылаете его из ActionScript.

0

Да, вам необходимо зарегистрировать свой класс, а альтернативой является использование тега метаданных в объявлении Flex VO.

package VO 
{ 
    [RemoteClass(alias="org.corlan.VOAuthor")] 
    public class VOAuthor 
    { 
     private var id_aut : int; 
     public var fname_aut : String; 
     public var lname_aut : String; 
... 

Надежда, что помогает,

Роджер.

PS. Более подробное объяснение (что помогло мне) можно найти здесь: http://www.brentknigge.com/?q=node/499