Flex 1056:“无法创建属性” - 但该属性已存在于数据表中

时间:2013-12-03 16:09:40

标签: php database actionscript-3 flex referenceerror

我正在关注一个flex应用程序教程,虽然我已经能够修复我的大多数错误,但这个让我完全难过。

我有一个名为employees的数据表,包含以下列:id,Firstname,Lastname,Title,Birthday,Mobilephone,Officephone,Email,Address,photofile。

应用程序很简单:列出HomeView中的所有员工,当您点击员工时,会将您带到DetailView,您可以在其中查看所有额外信息。然而,每次我这样做,我得到: “ReferenceError:错误#1056:无法在valueObjects.Employees上创建属性地址。”

以下是DetailView的代码:

    xmlns:employeesservice1="services.employeesservice1.*"
    overlayControls="false" 
    title="{getEmployeesByIDResult.lastResult.Firstname} {getEmployeesByIDResult.lastResult.Lastname}"
    viewActivate="view1_viewActivateHandler(event)">

<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;
        import spark.events.ViewNavigatorEvent;
        import mx.rpc.events.ResultEvent;

        protected function goBack(event:Event):void
        {
            navigator.pushView(EmployeeListerHomeView);
        }

        protected function getEmployeesByID(itemID:int):void
        {
            getEmployeesByIDResult.token = employeesService1.getEmployeesByID(itemID);
        }

        protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void
        {
            this.addElement(busyIndicator);
            getEmployeesByID(data as int);
        }
        protected function getAllEmployeesResult_resultHandler(event:ResultEvent):void
        {
            this.removeElement(busyIndicator);
        }   
    ]]>
</fx:Script>
<fx:Declarations>
    <s:CallResponder id="getEmployeesByIDResult" result="getAllEmployeesResult_resultHandler(event)"/>
    <employeesservice1:EmployeesService1 id="employeesService1"/>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:navigationContent>
    <s:Button id="backBtn" click="goBack(event)">
        <s:icon>
            <s:MultiDPIBitmapSource source160dpi="@Embed('assets/save160.png')"
                                    source240dpi="@Embed('assets/save240.png')"
                                    source320dpi="@Embed('assets/save320.png')"/>
        </s:icon>
    </s:Button>
</s:navigationContent>
<s:Image x="10" y="10" width="100" height="100"
         source="http://localhost/EmployeeLister/assets/{getEmployeesByIDResult.lastResult.photofile}128x128.png" />
<s:VGroup width="100%" height="100%" gap="10" paddingLeft="120">
    <s:Label fontWeight="bold" paddingTop="10" text="Title"/>
    <s:Label text="{getEmployeesByIDResult.lastResult.Title}"/>
    <s:Label fontWeight="bold" paddingTop="10" text="Cell Phone"/>
    <s:Label text="{getEmployeesByIDResult.lastResult.Cellphone}"/>
    <s:Label fontWeight="bold" paddingTop="10" text="Office Phone"/>
    <s:Label text="{getEmployeesByIDResult.lastResult.Officephone}"/>
    <s:Label fontWeight="bold" paddingTop="10" text="Email"/>
    <s:Label text="{getEmployeesByIDResult.lastResult.Email}"/>
    <s:Label fontWeight="bold" paddingTop="10" text="Address"/>
    <s:Label text="{getEmployeesByIDResult.lastResult.Address}"/>
</s:VGroup>
<s:BusyIndicator id="busyIndicator" verticalCenter="0" horizontalCenter="0" symbolColor="red"/>

现在需要注意的事项:我在创建了EmployeesService1之后添加了手机,办公电话,电子邮件和地址列,因此我必须编辑.php以包含这些新值。所以我担心我可能在那里做错了,但是我检查了错别字,我没有在其他值上得到任何错误,所以,我不知道。再次,这让我感到非常沮丧。我已经测试了服务中的所有操作,并且它们都返回了所有适当的值。

这是.php的功能:     public function getEmployeesByID($ itemID){

    $stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename where id=?");
    $this->throwExceptionOnError();

    mysqli_stmt_bind_param($stmt, 'i', $itemID);        
    $this->throwExceptionOnError();

    mysqli_stmt_execute($stmt);
    $this->throwExceptionOnError();

    mysqli_stmt_bind_result($stmt, $row->id, $row->Firstname, $row->Lastname, $row->Title, $row->Birthday, $row->Cellphone, $row->Officephone, $row->Email, $row->Address, $row->photofile);

    if(mysqli_stmt_fetch($stmt)) {
      $row->Birthday = new DateTime($row->Birthday);
      return $row;
    } else {
      return null;
    }
}

即使你不知道确切的答案,我有更简单的方法来弄清楚发生了什么吗?错误窗口中的调用堆栈是所有内部flex / as3内容。所以,如果我不需要,我不想再去那个兔子洞。

非常感谢任何帮助。感谢!!!!

1 个答案:

答案 0 :(得分:0)

想出来。

问题出在.php中,在每个生成的getEmployeesBy**()函数之后,有一个@return stdClass

但我需要创建一个getEmployeesByName函数,并在getEmployeesByID()@return stdClass之间执行此操作。所以我只是在函数之间添加了另一个@return,现在它们都干净利落地工作了。