CodeIgniter和Flex的结合

BT话痨群的后台中有一个彩蛋,只有资深BT才知道。

这个彩蛋是肾上开发的,目的是测试CI和Flex(Flash)的结合。

在这个彩蛋中,解决了一下几个问题:

  • 用CI生成Flex需要的数据(XML格式);
  • 用Flex的HTTPService来获得数据并呈现;
  • 用CI来包含生成的SWF文件并最终以Nice URI呈现。

一、用CI生成Flex需要的数据(XML格式)

function xml_weekday()
{
        $timespan=time()-mktime(8,0,0,2,22,2010);
        $this->load->model('Sitemodel');
        $data['qd']=$this->Sitemodel->getNoticeCountWeekday();
        $this->load->view('welcome_xml_weekday_view', $data);
}

请注意,我这里用了CI中控制器(Controller)来实现数据的获得,而且复用了models里的方法。这样做的好处是,在Flex中可以用一个URI来获取数据。 数据的输出是用load->view实现的,而在那个view文件中,我只是简单的按照XML格式输出数据而已:

$nl=n;
echo '<?xml version=1.0 encoding=utf-8??>'.$nl;
echo '<catalog>'.$nl;
foreach($qd as $i)
{
    $nc=$i->nc;
    $dw=$i->dw;
    echo <notice dw="$dw">.$nl;
    echo <count>$nc</count>.$nl;
    echo </notice>.$nl;
}
echo '</catalog>';

二、用Flex的HTTPService来获得数据并呈现

Flex端的编写相对简单。关键代码如下:

<application initialize="weekday.send()" layout="absolute" xmlns:mx="http://www.adobe.com/2006/mxml">
    <httpservice id="weekday" url="http://www.?????.com/status/index.php/welcome/xml_weekday"></httpservice>
    <panel color="0xffffff" height="300" layout="vertical" title="?????.com站点统计" width="600">
        <areachart color="0x323232" dataprovider="{weekday.lastResult.catalog.notice}" height="100%" id="chartStatus" showdatatips="true">
            <horizontalaxis>
                <categoryaxis categoryfield="dw"></categoryaxis>
            </horizontalaxis>
            <series>
                <areaseries displayname="话痨数量" form="segment" yfield="count"></areaseries>
            </series>
        </areachart>
    <button click="weekday.send()" counts="" label="Get"></button>
    </panel>
</application>

关键是使用HTTPService部件来获得数据。它的URL属性由于在第一步的准备工作,可以是一个很漂亮的URI。

三、用CI来包含生成的SWF文件并最终以Nice URI呈现。

再次回到PHP中,在controller中我创建了一个action,来调用对应的嵌入了SWF的模板:

<embed align="middle" allowscriptaccess="sameDomain" bgcolor="#869ca7" height="100%" loop="false" name="main" play="true" pluginspage="http://www.adobe.com/go/getflashplayer" quality="high" src="http://www.?????.com/status/system/application/views/bspmq.swf" type="application/x-shockwave-flash" width="100%">
</embed>

这个文件基本上可以由Flex自己生成,只要稍作修改以符合要求即可。 在BT群话痨系统中,你可以用http://xxxxxxxxxxxx/status/index.php/welcome/swf 来看到效果:

Comments

2 responses to “CodeIgniter和Flex的结合”

  1. Firm Avatar

    看来我OUT了

  2. 光光制作 Avatar
    光光制作

    您好,我最近想将CI框架结合在flex中,但是CI框架是用路由技术的$this->load->view(‘myflex_view’) (原意:跳转到一个flex制作的页面) 但最后却不行。
    请大侠指教一下!O(∩_∩)O谢谢

Leave a Reply

Your email address will not be published. Required fields are marked *