添加新专辑的功能有两部分工作要做:
- 为用户显示一个填写资料的表单;
- 处理表单提交和保存到数据库。
我们使用Zend_Form 来完成这任务,Zend_Form 组件允许我们创建表单和验证表单输入。我们先创建一个扩展Zend_Form 的新类Form_Album 来定义新的表单。因为这是一个应用资源,Form_Album 保存在application/forms 目录的Album.php 文件。使用zf 命令行工具创建相关文件:zf create form Album
。
创建的Album.php 文件默认包含了init() 方法,创建表单和添加元素。编辑application/forms/Album.php文件,移除init() 方法中的注释,并添加以下代码:
zf-tutorial/application/forms/Album.php
<?php
class Application_Form_Album extends Zend_Form
{
public function init()
{
$this->setName('album');
$id = new Zend_Form_Element_Hidden('id');
$id->addFilter('Int');
$artist = new Zend_Form_Element_Text('artist');
$artist->setLabel('Artist')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$title = new Zend_Form_Element_Text('title');
$title->setLabel('Title')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton');
$this->addElements(array($id, $artist, $title, $submit));
}
}
在Application_Form_Album 的init() 方法里面,我们为id, artist,title, 和 submit按钮创建了4个表单元素。对于每一项都设置了不同的属性,包括要显示的标签。对于id,Int 过滤器可以确保它只是一个整数以避免潜在的SQL注入问题。
对于text文本元素,我们添加了两个过滤器,StripTags 和 StringTrim 移除不想要的HTML和空白字符。同时设置它为必填项,通过添加NotEmpty 验证器确保用户确实输入了要求的信息(从技术上说NotEmpty验证器不是必须的,因为系统设置了setRequired() 为True,会自动添加;这里只是演示下如何使用验证)。
现在我们需要让这个表单显示并处理提交的数据。这由IndexController 控制器的 addAction() 方法完成:
zf-tutorial/application/controllers/IndexController.php
...
function addAction()
{
$form = new Application_Form_Album();
$form->submit->setLabel('Add');
$this->view->form = $form;
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
$artist = $form->getValue('artist');
$title = $form->getValue('title');
$albums = new Application_Model_DbTable_Albums();
$albums->addAlbum($artist, $title);
$this->_helper->redirector('index');
} else {
$form->populate($formData);
}
}
}
...
一起来解析下上面的代码:
$form = new Application_Form_Album();
$form->submit->setLabel('Add');
$this->view->form = $form;
实例化Form_Album类,设置submit按钮的label为“Add”,然后赋给view 去呈现。
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
如果请求的isPost() 为True,即表单已经提交,我们就使用getPost() 从请求中获取表单数据,并使用isValid() 成员函数验证数据。
$artist = $form->getValue('artist');
$title = $form->getValue('title');
$albums = new Application_Model_DbTable_Albums();
$albums->addAlbum($artist, $title);
如果表单有效,model 类Application_Model_DbTable_Albums 进行实例化,并使用前面models层定义的addAlbum() 方法在数据库中创建新记录。
$this->_helper->redirector('index');
保存了新的专辑行数据后,使用Redirector 这个action helper 返回到 index action页面。
} else {
$form->populate($formData);
}
如果表单数据不合法,表单会重新显示并填入用户输入的数据。
然后我们要在view 脚本add.phtml中呈现表单:
zf-tutorial/application/views/scripts/index/add.phtml
<?php
$this->title = "Add new album";
$this->headTitle($this->title);
echo $this->form ;
?>
很简单,只要echo 输出$this->form 即可,表单它知道如何显示自己。
分享到:
相关推荐
PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好...
Zend Framework 入门教程(简体中文1.52版)v0.12.pdf MD5: 767F31B21311D6431EA757B9D496FD51 SHA1: 06E81BDD16DA52976898310A50395FCB7DF81AF7 CRC32: 01FFFE67 Zend Framework入门教程中文版.pdf MD5: DF70A9C9B...
Zend Framework 2 官方教程汉化版
Zend Framework入门教程中文版 pdf格式的
Table of Contents •Introduction to Zend Framework •Overview •Installation •Learning Zend Framework •Zend Framework Quick Start •Autoloading in Zend Framework •Plugins in Zend Framework •...
Whether you are learning Zend framework from scratch or looking to sharpen up your skills from previous versions, Zend Framework 2 Application Development will help you to harness the power of Zend ...
本资料为Zend Framework2 入门教程,主要讲述如果入门Zend Framework2。教程内容比较普实。
今天我这里要写的入门教程就是Zend Framework 2 的,如果有需要Zend Framework 1 的网友可以在百度搜索 lai1362000 或lai1362000@yahoo.com.cn 的相关文章 下面正式开始介绍一个简单的入门程序,程序有2 个模块,3 ...
Zend Framework实例教程.pdf格式
Zend Framework 框架开发入门教程。
zend framework1.0 中文教程
这是 Zend Framework 的非常经典的入门教程,它的原作者 Rob Allen 是《Zend Framework In Action》一书的作者。在翻译这个版本之前,只知道 Jason Qi 翻译的 0.9 版(实际内容是关于 Zend Frame 0.6
ZendFramework-1.10.4
PHP官网推荐MVC框架教程,文档。是学习PHP zend framework框架的绝佳教材。
zend framework中英文手册,包含中文手册,英文手册两个版本。
PHP 准官方框架:Zend Framework 2 基础教程
zend framework zendframework manual 手册,Zend Framework手册 中文版,有一部分还没有汉化
1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) 2.1.4. 注册角色(Role) 2.1.5. 定义访问...
ZendFramework 最新版本,MVC
zend framework zend framework zend framework zend framework zend framework zend framework zend framework