zend 学习笔记三,完

Zend Framework 教程 – 显示专辑列表


即做列表显示。
在控制器中写代码:(IndexController 类 的indexAction() )

zf-tutorial/application/controllers/IndexController.php
...
function indexAction() {
	$albums = new Application_Model_DbTable_Albums();
	$this->view->albums = $albums->fetchAll();
}



实例化一个基于 table data gateway 的model实例。fetchAll() 函数返回一个Zend_Db_Table_Rowset,它可以让我们在action的view脚本文件中迭代输出返回的各行。


修改相应的 view 脚本的模板 index.phtml


控制器中保存的是数组 $albums, 模板引用的话用
foreach ( $this->albums as $album )
$album->id;

这样子就可以了。


----------------------------------------------------
列表页完成。


添加信息步骤:
1,为用户显示一个填写资料的表单;
2,处理表单提交和保存到数据库。


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() 方法中的注释,并添加代码:

http://farlee.info/archives/zend-framework-add-album.html


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));
	}
}

为id, artist, title, 和 submit按钮创建了4个表单元素

对于id,Int 过滤器可以确保它只是一个整数以避免潜在的SQL注入问题。


对于text文本元素,移除不想要的HTML和空白字符

zf-tutorial/application/controllers/IndexController.php
...
function addAction() {
	//实例化Form_Album类,设置submit按钮的label为“Add”,然后赋给view 去呈现
	$form = new Application_Form_Album();
	$form->submit->setLabel('Add');
	$this->view->form = $form;


	//如果请求的isPost() 为True,即表单已经提交,我们就使用 getPost() 从请求中获取表单数据,并使用isValid() 成员函数验证数据。
	if ($this->getRequest()->isPost()) {
		$formData = $this->getRequest()->getPost();
		if ($form->isValid($formData)) {


			//如果表单有效,model 类 Application_Model_DbTable_Albums 进行实例化,并使用前面models层定义的 addAlbum() 方法在数据库中创建新记录。
			$artist = $form->getValue('artist');
			$title = $form->getValue('title');
			$albums = new Application_Model_DbTable_Albums();
			$albums->addAlbum($artist, $title);


			//保存了新的专辑行数据后,使用Redirector 这个action helper 返回到 index action页面,跳转到列表页。
			$this->_helper->redirector('index');
		} 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 ;
?>
-----------------------------------------------------
表单添加完成。


编辑记录
http://farlee.info/archives/zend-framework-edit-album.html


我们尽量不要使用GET 去执行不可逆转的删除操作,而应该用POST
是的,要多注意


执行删除
http://farlee.info/archives/zend-framework-delete-albums.html


Zend Framework的Zend_Auth组件负责基于证书验证一个用户的过程的认证,这个证书通常是用户名和密码


创建数据库,为用户名,密码等保存数据做支持
创建控制器文件和view 
zf create controller Auth
创建登录表单
zf create form Login


http://farlee.info/archives/zend-framework-zend_auth.html

你可能感兴趣的:(zend 学习笔记三,完)