解析在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 join函数应用
May 04 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
PHP eval函数使用介绍
Dec 08 PHP
PHP模板解析类实例
Jul 09 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
php中类和对象:静态属性、静态方法
Apr 09 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
PHP迭代器和生成器用法实例分析
Sep 28 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 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
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
ES6生成器用法实例分析
2017/04/10 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
python获取网页状态码示例
2014/03/30 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
性能服装:HYLETE
2018/08/14 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
观后感的写法
2015/06/19 职场文书
企业团队精神心得体会
2016/01/19 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
springboot用户数据修改的详细实现
2022/04/06 Java/Android
JavaScript设计模式之原型模式详情
2022/06/21 Javascript