`
happmaoo
  • 浏览: 4474910 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

FleaPHP 的 Ajax 支持和 WebControls

阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
原文地址:http://www.fleaphp.org/bbs/viewthread.php?tid=40

FleaPHP 现在具有了基本的 Ajax 支持,示例代码如下:

首先在控制器显示模版的动作方法中有如下代码:
/**
*显示登录界面
*/
functionactionIndex()
{
$this->_registerFormEvent('form_login','submit','OnFormLoginSubmit',
array(
'beforeRequest'=>"$('loginFailed').setHTML('');",
'evalScripts'=>true,
'update'=>'loginFailed'
)
);
$ajax=&$this->_getAjax();

init_webcontrols();

include(TPL_DIR.'/Login.php');
}

_registerFormEvent() 是 FLEA_Controller_Action 的一个方法,用来注册一个表单的事件。
如果是注册控件(例如文本框)的事件,则用 _registerEvent() 方法。

两个方法的参数是一样的,第一个参数都是控件或者表单的ID,第二个参数是要注册的 DOM 事件(例如 click、change、submit)。第三个参数是当前控制器中用于响应该事件的动作名。第四个参数则是一些 Ajax 事件的属性。

上面代码里面为一个名为 form_login 的表单注册了一个 submit 事件,响应该事件的动作名是 OnFormLoginSubmit。

init_webcontrols(); 是用于初始化 WebControls,因为 Login.php 模版会用到 WebControls。

所以这个控制器还有一个方法如下:

functionactionOnFormLoginSubmit()
{
$username=isset($_POST['username'])?$_POST['username']:'';
$password=isset($_POST['password'])?$_POST['password']:'';
if($username=='dualface'&&$password=='123456'){
ajax_redirect(url(
'Welcome'));
}
else{
echo'您输入的用户名或密码不正确';
}
}

这个方法里面,判断用户登录是否成功。成功就用 ajax_redirect() 重定向浏览器,失败则显示出错信息。要注意的是,ajax_redirect() 要求事件 Ajax 属性中的 evalScripts 必须为 true。这样才能成功的重定向浏览器。

整个控制器的代码:

classController_DefaultextendsFLEA_Controller_Action
{
/**
*显示登录界面
*/
functionactionIndex()
{
$this->_registerFormEvent('form_login','submit','OnFormLoginSubmit',
array(
'beforeRequest'=>"$('loginFailed').setHTML('');",
'evalScripts'=>true,
'update'=>'loginFailed'
)
);
$ajax=&$this->_getAjax();

init_webcontrols();

include(TPL_DIR.'/Login.php');
}

functionactionOnFormLoginSubmit()
{
$username=isset($_POST['username'])?$_POST['username']:'';
$password=isset($_POST['password'])?$_POST['password']:'';
if($username=='dualface'&&$password=='123456'){
ajax_redirect(url(
'Welcome'));
}
else{
echo'您输入的用户名或密码不正确';
}
}
}

非常简单,不需要修改任何应用程序设置,也不需要从特别的对象继承。而且只有在显示模版的动作方法中才需要注册事件(会载入 Ajax 的支持文件),其他动作方法不需要载入任何与 Ajax 相关的文件,提高了性能。

客户端需要的 JavaScript 会自动生成

scriptlanguage="JavaScript"type="text/javascript">...
if(!Object.extend)...{
alert(
'ERROR:mootoolsJavaScriptframeworkfailed.');
}


functionajax_form_login_onsubmit()
...{
$(
'loginFailed').setHTML('');
varmyajax=newAjax(
'/__personal/magazine/www/index.php?controller=Default&action=OnFormLoginSubmit',
...{
postBody:
this.toQueryString(),
evalScripts:
true,
update:
"loginFailed"
}

);
myajax.request();

returnfalse;
}


Window.onDomReady(
function()...{
$(
'form_login').addEvent('submit',ajax_form_login_onsubmit)
$(
'form_login').onsubmit=function()...{returnfalse;};
}
);

script>

前面是服务端的代码,现在来看看客户端的代码。

客户端主要是模版,其中必须载入 mootools.js 文件:

scriptlanguage="JavaScript"type="text/javascript"src="scripts/mootools.js">script>
php$ajax->dumpJs();?>

mootools.js 文件在 FLEA/Ajax 目录中,需要复制到应用程序的 scripts 目录中。

前面我们为名为 form_login 的表单注册了事件,所以我们的页面里面必须有一个名为 form_login 的表单,不然是不会正确执行的。

formname="form_login"id="form_login">
................
form>

表单中增加一个提交按钮,点击后,我们在服务端注册的事件就会执行。

就这么简单?YES

除了注册事件、载入 JS 外,其他工作都由 FleaPHP 完成。

===============================================

FleaPHP 以前版本中有一个 FLEA/Helper/Html.php 文件,其中有许多生成页面控件(文本框、列表框)的方法。

不过这些方法虽然很容易使用,但是不够灵活,所以现在 FleaPHP 中提供了全新的 WebControls 组件。这个组件自带一组控件,还可以随意扩展。要使用这个组件,预先调用一下 init_webcontrols() 全局函数就可以了。

然后就可以用下面的代码创建各种控件:

phpwebcontrol('textbox','username',
array(
'class'=>'textbox',
'size'=>28,
'maxlength'=>22,
)
);
?>

这段代码生成下面的 XHTML 代码(不支持 HTML):

inputtype="text"name="username"id="username"value=""class="textbox"size="28"maxlength="22"/>

与以前的 html_textbox() 相比,新的 webcontrols() 函数更灵活,可以为控件指定任意数量的属性。

看一个稍微复杂点的例子:

phpwebcontrol('radiogroup','myoption',
array(
'items'=>array(
'选项1'=>1,
'选项2'=>2,
'选项3'=>3,
'选项4'=>4
)
,
'selected'=>2,
'class'=>'blue_options',
)
);
?>

生成的 XHTML 代码如下:

inputtype="radio"name="myoption"id="myoption_0"value="1"class="blue_options"/>labelfor="myoption_0">选项1label>br/>
inputtype="radio"name="myoption"id="myoption_1"value="2"class="blue_options"/>labelfor="myoption_1">选项2label>br/>
inputtype="radio"name="myoption"id="myoption_2"value="3"checked="checked"class="blue_options"/>labelfor="myoption_2">选项3label>br/>
inputtype="radio"name="myoption"id="myoption_3"value="4"class="blue_options"/>labelfor="myoption_3">选项4label>

实际效果:



假如是从数据库取出的数据,那么用 array_hashmap() 转换一下记录集,就可以做为 items 属性来显示一个单选按钮组。

另一个例子,显示一个多选框:
phpwebcontrol('checkbox','keep_password',
array(
'caption'=>'记住我的密码',
)
);
?>

生成的 XHTML 代码如下:

inputtype="checkbox"name="keep_username"id="keep_username"value="1"/>labelfor="keep_username">在此计算机上保留我的登录信息label>

实际效果:



==================================

Ajax 支持和 WebControls 将在 FleaPHP 1.0.70 版本中发布。

目前的开发进度请参考:http://www.qeeyuan.com:8090/browse/FLEA?report=com.atlassian.jira.plugin.system.project:roadmap-panel


分享到:
评论

相关推荐

    fleaphp ajaxLogin.

    【fleaphp AJAX Login 实例详解】 在Web开发中,用户登录是常见的功能,而AJAX(Asynchronous JavaScript and XML)技术的应用使得用户交互更加流畅,无需刷新页面即可完成登录操作。本实例将深入探讨如何使用...

    fleaphp核心完整代码

    Fleaphp的视图系统支持模板引擎,允许开发者使用模板语言编写动态视图,提高代码可读性和维护性。 5. **数据库操作**:Fleaphp提供了数据库抽象层,支持多种数据库如MySQL、SQLite、PostgreSQL等。它使用ORM(对象...

    fleaphp1.7.1524

    6. **错误和异常处理**:Fleaphp 1.7.1524可能会提供一套完善的错误和异常处理机制,帮助开发者更好地定位和修复问题,提升程序的健壮性。 7. **安全特性**:考虑到Web开发中的安全性,Fleaphp可能包含了防止SQL...

    fleaphp框架

    FleaPHP框架是一款轻量级的PHP开发框架,旨在提高开发效率并降低项目的维护成本。...如果你正准备使用FleaPHP进行开发,建议先熟悉其基本概念和核心组件,再结合官方文档和社区资源进行实践,以充分发挥框架的优势。

    php框架fleaphp

    - **运行与调试**:启动服务器,访问应用,利用Fleaphp提供的错误和日志机制进行调试。 4. **拓展与优化** - **插件与扩展**:Fleaphp允许开发者编写插件,扩展框架功能,或集成第三方服务。 - **性能优化**:...

    fleaphp中文手册详细版

    Fleaphp支持中间件,这是一种处理请求和响应的组件,可以用于实现如认证、日志记录、限速等功能。中间件可以按需堆叠,提供灵活的请求处理流程。 七、配置(Configuration) Fleaphp的配置文件允许开发者自定义框架的...

    FleaPHP 框架学习教程.pdf

    6. **Ajax及WebControls操作篇** - FleaPHP中的Ajax类介绍。 - WebControls的开发实践。 - 高级Ajax功能实现案例。 7. **高级开发篇** - 高级开发技巧分享。 - 如何增强FleaPHP框架,实现PHP5特性的具体指导。...

    Fleaphp 常用方法.doc

    在FleaPHP开源应用程序开发框架中,有几个关键的系统方法,它们是开发高效Web应用的基础。下面我们将详细探讨这些方法: ...在实际项目中,结合FleaPHP的其他组件和模块,可以构建出强大且易于维护的应用程序。

    fleaphp框架附实例(最新版)

    2. **路由系统**:Fleaphp的路由机制允许开发者灵活定义URL到控制器和方法的映射,支持参数传递,实现URL美化和更高效地处理HTTP请求。 3. **控制器(Controller)**:控制器是MVC模式中的关键组件,负责接收用户请求...

    fleaphp 框架实例以及详细使用方法说明

    Fleaphp框架是一款专为提高开发效率设计的轻量级PHP框架,它以其简洁的代码结构、良好的可扩展性和...随着对框架的深入学习和实践,你会发现Fleaphp不仅易于入门,而且在高级特性的支持下,能满足复杂项目的开发需求。

    fleaphp中文手册

    3. **路由系统**:FleaPHP拥有强大的路由机制,支持基于URL的动态路由分配,可以方便地映射请求到相应的控制器和方法,实现灵活的URL管理。 4. **数据库支持**:FleaPHP提供了数据库抽象层,支持多种数据库系统如...

    fleaphp手册

    fleaphp.chm手册

    FleaPHP+开发指南

    fleaphp框架,国产最好php开发框架

    FleaPHP的单入口文件详解

    4. **路由处理**:根据解析后的URL和配置中的路由规则,FleaPHP会确定应执行的控制器和方法。路由可以是预定义的,也可以动态生成,以支持RESTful API或其他高级路由策略。 5. **执行控制器**:找到对应的控制器后...

    php.mysql.FLEAPHP.Smarty.正则手册汇总

    `FLEAPHP手册1.chm`为开发者提供了框架的使用指南,包括路由设定、模型构建、视图渲染、控制器操作等,有助于快速理解和应用这个框架。 【Smarty】:Smarty是一个PHP模板引擎,将业务逻辑和显示模板分离,提高代码...

    Fleaphp框架使用规范收集.pdf

    - 模块化:Fleaphp支持模块化开发,开发者可以组织代码为不同的模块,便于管理和维护。 - 数据访问层(Data Gateway):在MVC架构中,数据访问层封装了与数据库交互的所有细节,Fleaphp框架使用TableDataGateway类来...

    FleaPHP 框架学习教程.zip

    FleaPHP提供了内置的异常处理和日志记录机制,可以帮助您调试和追踪程序中的问题。通过自定义错误处理器,您可以根据项目需求定制错误报告和处理策略。 最后,FleaPHP支持Composer包管理器,这意味着您可以轻松地...

    FleaPHP分页方法讲解

    此外,FleaPHP的分页组件还支持自定义样式和配置,以适应不同的项目需求。你可以调整分页链接的样式,添加“跳转到指定页”功能,或者根据实际需求调整分页按钮的数量等。 对于更复杂的分页需求,比如根据查询条件...

    FleaPHP chm文档

    FleaPHP chm文档,简单实例,框架流程介绍

Global site tag (gtag.js) - Google Analytics