解析在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 相关文章推荐
说明的比较细的php 正则学习实例
Jul 30 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
Yii开启片段缓存的方法
Mar 28 PHP
PHP精确计算功能示例
Nov 29 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
Yii2框架redis基本应用示例
Jul 13 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
Sep 18 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
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
轮播的简单实现方法
2016/07/28 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
vue实现文字加密功能
2019/09/27 Javascript
Python线程的两种编程方式
2015/04/14 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
查看django版本的方法分享
2018/05/14 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
Python切图九宫格的实现方法
2019/10/10 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
银行实习人员自我鉴定
2013/09/22 职场文书
护理专业推荐信
2013/11/07 职场文书
班主任自我评价范文
2015/03/11 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
2015年调度员工作总结
2015/04/30 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL