解析在zend Farmework下如何创立一个FORM表单


Posted in PHP onJune 28, 2013

1.首先让我们设置一下我们的程序,让Zend能够自动载入方法,不需要我们手动的去载入

require_once 'Zend/Loader/Autoloader.php'    //载入自动加载类
$loader = Zend_Loader_Autoloader::getInstance();//自动实例化
$loader->registerNamespace('Application_');//注册命名空间(只有系统默认的,和注册的才可以被自动载入)
$loader->registerNamespace(array('Foo_', 'Bar_')); //多个命名空间的注册方法
$loader->setFallbackAutoloader(true);  //一个增加消耗的方法,不需要命名空间,直接载入所有类(不被推荐使用)

然后请注意,你的包含目录是否已经包含了,你自己的需被载入的目录
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    realpath(APPLICATION_PATH . '/forms/'),
    get_include_path(),
)));
//这里我们包含了我们的forms目录,方便程序的被载入

2.确认下form的目录
在application/forms/下 建立一个  Guestbook.phps
作为我们form的类文件,如下:
<?php
 class Application_Form_Guestbook extends Zend_Form
{
    public function init()
    {
        // Set the method for the display form to POST
        $this->setMethod('post');//设置提交方式        // Add an email element
        $this->addElement('text', 'email', array(//原件的类型,名词,和一些其他信息的定义
            'label'      => 'Your email address:',
            'required'   => true,
            'filters'    => array('StringTrim'),
            'validators' => array(
                'EmailAddress',
            )
        ));
        // Add the comment element
        $this->addElement('textarea', 'comment', array(
            'label'      => 'Please Comment:',
            'required'   => true,
            'validators' => array(
                array('validator' => 'StringLength', 'options' => array(0, 20))
                )
        ));
        // Add a captcha
        $this->addElement('captcha', 'captcha', array(
            'label'      => 'Please enter the 5 letters displayed below:',
            'required'   => true,
            'captcha'    => array(
                'captcha' => 'Figlet',
                'wordLen' => 5,
                'timeout' => 300
            )
        ));
        // Add the submit button
        $this->addElement('submit', 'submit', array(
            'ignore'   => true,
            'label'    => 'Sign Guestbook',
        ));
        // And finally add some CSRF protection
        $this->addElement('hash', 'csrf', array(
            'ignore' => true,
        ));
    }
}

然后添加一个路由控制文件
applictaion/controller/GuestbookController.php
<?php
class GuestbookController extends Zend_Controller_Action
{
    // snipping indexAction()...
    public function signAction()
    {
        $request = $this->getRequest();//获取接受到得信息
       // include_once("../application/forms/Guestbook.php");  手动加载类,只有不能自动载入时,才需要
        $form    = new Application_Form_Guestbook;//实例化这个方法        if ($this->getRequest()->isPost()) {//如果是POST传递的结果
            if ($form->isValid($request->getPost())) {//判断传递是否有效
                $comment = new Application_Model_Guestbook($form->getValues());
                $mapper  = new Application_Model_GuestbookMapper();
                $mapper->save($comment);
                return $this->_helper->redirector('index');
            }
        }
        $this->view->form = $form;//将表单赋值给试图
    }
}

最后添加一个简单的sign视图文件即可:
地址:application/views/scripts/guestbook/sgin.php
Please use the form below to sign our guestbook!
<?php
$this->form->setAction($this->url());
echo $this->form;

PHP 相关文章推荐
打造计数器DIY三步曲(中)
Oct 09 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
smarty半小时快速上手入门教程
Oct 27 PHP
详解PHP中的PDO类
Jul 06 PHP
php生成静态html页面的方法(2种方法)
Sep 14 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
如何用PHP做到页面注册审核
Mar 02 PHP
php生成网页桌面快捷方式
May 05 PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
解析zend Framework如何自动加载类
Jun 28 #PHP
使用PHP接收POST数据,解析json数据
Jun 28 #PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 #PHP
下拉列表多级联动dropDownList示例代码
Jun 27 #PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 #PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 #PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 #PHP
You might like
php实时倒计时功能实现方法详解
2017/02/27 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
python 两个数据库postgresql对比
2019/10/21 Python
python手写均值滤波
2020/02/19 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
元旦晚会活动总结
2014/07/09 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
医生见习报告范文
2014/11/03 职场文书
物流业务员岗位职责
2015/04/03 职场文书
Python Pandas pandas.read_sql_query函数实例用法分析
2021/06/21 Python