|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
培训的第四阶段,就是应用PHP语言开发实际的程序。以结合实际的项目开发来进行学习,效果真的很好,在学习完之后就开始练习,能比较容易掌握所学的知识,这是学校的学习所没法比的。ajax|web FleaPHP 如今具有了根基的 Ajax 撑持,示例代码以下:
起首在掌握器显示模版的举措办法中有以下代码:
/**
* 显示登录界面
*/
function actionIndex()
{
$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。
所以这个掌握器还有一个办法以下:
function actionOnFormLoginSubmit()
{
$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。如许才干胜利的重定向阅读器。
全部掌握器的代码:
class Controller_Default extends FLEA_Controller_Action
{
/**
* 显示登录界面
*/
function actionIndex()
{
$this->_registerFormEvent('form_login', 'submit', 'OnFormLoginSubmit',
array(
'beforeRequest' => "$('loginFailed').setHTML('');",
'evalScripts' => true,
'update' => 'loginFailed'
)
);
$ajax =& $this->_getAjax();
init_webcontrols();
include(TPL_DIR . '/Login.php');
}
function actionOnFormLoginSubmit()
{
$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 会主动生成:
<script language="JavaScript" type="text/javascript">...
if (!Object. extend) ...{
alert('ERROR: mootools JavaScript framework failed.');
}
function ajax_form_login_onsubmit()
...{
$('loginFailed').setHTML('');
var myajax = new Ajax(
'/__personal/magazine/www/index.php?controller=Default&action=OnFormLoginSubmit',
...{
postBody: this.toQueryString(),
evalScripts: true,
update: "loginFailed"
}
);
myajax.request();
return false;
}
Window.onDomReady(function() ...{
$('form_login').addEvent('submit', ajax_form_login_onsubmit)
$('form_login').onsubmit = function() ...{ return false; };
});
</script>
后面是办事真个代码,如今来看看客户真个代码。
客户端次要是模版,个中必需载入 mootools.js 文件:
<script language="JavaScript" type="text/javascript" src="scripts/mootools.js"></script>
<?php $ajax->dumpJs(); ?>
mootools.js 文件在 FLEA/Ajax 目次中,需求复制到使用法式的 scripts 目次中。
后面咱们为名为 form_login 的表单注册了事务,所以咱们的页面外面必需有一个名为 form_login 的表单,否则是不会准确履行的。
<form name="form_login" id="form_login">
................
</form>
表单中增添一个提交按钮,点击后,咱们在办事端注册的事务就会履行。
就这么复杂?YES
除注册事务、载入 JS 外,其他任务都由 FleaPHP 完成。
===============================================
FleaPHP 之前版本中有一个 FLEA/Helper/Html.php 文件,个中有很多生成页面控件(文本框、列表框)的办法。
不外这些办法固然很轻易利用,然而不敷天真,所以如今 FleaPHP 中供应了全新的 WebControls 组件。这个组件自带一组控件,还可以随便扩大。要利用这个组件,事后挪用一下 init_webcontrols() 全局函数就能够了。
然后就能够用上面的代码创立各类控件:
<?php webcontrol('textbox', 'username',
array(
'class' => 'textbox',
'size' => 28,
'maxlength' => 22,
)
); ?>
这段代码生成上面的 XHTML 代码(不撑持 HTML):
<input type="text" name="username" id="username" value="" class="textbox" size="28" maxlength="22" />
与之前的 html_textbox() 比拟,新的 webcontrols() 函数更天真,可觉得控件指定恣意数目的属性。
看一个略微庞杂点的例子:
<?php webcontrol('radiogroup', 'myoption',
array(
'items' => array(
'选项 1' => 1,
'选项 2' => 2,
'选项 3' => 3,
'选项 4' => 4
),
'selected' => 2,
'class' => 'blue_options',
)
); ?>
生成的 XHTML 代码以下:
<input type="radio" name="myoption" id="myoption_0" value="1" class="blue_options" /><label for="myoption_0" >选项 1</label><br />
<input type="radio" name="myoption" id="myoption_1" value="2" class="blue_options" /><label for="myoption_1" >选项 2</label><br />
<input type="radio" name="myoption" id="myoption_2" value="3" checked="checked" class="blue_options" /><label for="myoption_2" >选项 3</label><br />
<input type="radio" name="myoption" id="myoption_3" value="4" class="blue_options" /><label for="myoption_3" >选项 4</label>
实践后果:
假设是从数据库掏出的数据,那末用 array_hashmap() 转换一下纪录集,就能够做为 items 属性来显示一个单选按钮组。
另外一个例子,显示一个多选框:
<?php webcontrol('checkbox', 'keep_password',
array(
'caption' => '记住我的暗码',
)
); ?>
生成的 XHTML 代码以下:
<input type="checkbox" name="keep_username" id="keep_username" value="1" /><label for="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
多个成员之间重复做相同的工作,很容易因为交流沟通的时候没有进行一致性的文档要求而出现不明错误,严重影响开发进度,导致在预定时间内无法完成该项目或者完成的项目跟原先计划所要实现的项目功能不符合。 |
|