ZendFramework学习第二章(试图助手)
先解释下:看过zendFramework手册的同学读了我的文章感觉我好像抄袭手册似的,你错了,我并没有看手册,我看的是一本灰灰灰常坑爹的书,此书等我买回来之后发现他他妈的就是copy的手册上边的知识,偶尔加上自己见解。至于什么书我也不说了,看过此书的你懂得。但是我写的文章不仅仅是让大家看的,更重要的是我把他作为自己的笔记写上去,什么时候健忘了,回来看看,学习历程嘛!
我的文章呢有几大好处,首先我表示我的文章适合新新新新手看,因为我在看书的时候把没必要先学的卡掉了,我认为不会了就要跳过去先,等学完了再回头细看;其次呢我的文章是我边学变作例子后写出来的,在我写例子过程中遇到难题被我解决的话我也会给大家讲到的,这些书上和手册上是没有的。
在视图脚本中,经常需要执行某些特定的复杂函数,如格式化日期、生成表单对象或显示Action的连接等。可以通过助手类来完成这些操作。
使用$this->HelperName()来调用助手helper,此时Zend_View会:
1.加载Zend_View_Helper_helperName类,
2.建立一个对象实例,
3.调用它的HelperName()方法。
那么这个对象实例会在Zend_View的实例内一直存下去,并可以被$this->HelperName()重复调用。
Zend_View组件自带了几个helper类,均是用于生成组件的,每个类都有自动过滤变量功能,具体如下:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
formButton($name,$value,$attribs) :生成<input type="button"/>
formCheckbox($name,$value,$attribs,$optoins) :生成<input type="checkbox"/>
※$optons参数是一个数组,第一个值是 "checked" ,第二个值是 " unchecked"( 默认为 1 和 0 ) 。
如果$value匹配"checked"值,则这个checkbox显示为已选中。
formFile($name,$value,$attribs) :生成<input type="file"/>
formHidden($name,$value,$attribs) :生成 <input type="hidden"/>
formPassword($name,$value,$attribs) :生成 <input type="password"/>
formRadio($name,$value,$attribs,$options) :生成 <input type="radio"/>
※每一个$options为数组的一个元素,键为radio的值,并且元素的值是radio的标签。
formReset($name,$value,$attribs) :生成 <input type="reset"/>
formSelect($name,$value,$attribs,$options) :建立一个<select> ...</select>标签。
※其中每个<option>对应一个$option数组元素。元素的键是option的值,元素的值是option的标签。
$value这个值的option默认为选中。
formSubmit($name,$value,$attribs) :生成 <input type="submit"/>
formText($name,$value,$attribs) :生成 <input type="text"/>
formTextarea($name,$value,$attribs) :生成 <input type="textarea"/>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
对于这些助手类使用很简单,只需要调用即可,他们会自己加载并实例化的。
下边写个例子,这个例子是我改过的手册上的一个例子:
控制器部分:IndexController.php
<?php
//header("Content-Type: text/html; charset=utf-8");
class IndexController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
$countries = array(
'us' => '美国',
'il' => '以色列',
'de' => '德国',
);
$this->view->countries = $countries;
}
}
视图部分:index.phtml
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="action.php" method="post">
<p><lable>邮箱:
<?php echo $this->formText('email','you@example.com',array('size'=>32));?>
</lable></p>
<p><lable>国家:
<?php echo $this->formSelect('country','us',null,$this->countries);?>
</lable></p>
<p><lable>请选择:
<?php echo $this->formCheckbox('opt_in','yes',null,array('yes','no'));?>
</lable></p>
</form>
</body>
</html>
在写此代码的过程中呢我遇到了一问题,也就是大家经常遇到的编码问题,一开始option里边的值为英文的可以正常显示,可后来我改为中文后发现不能正常显示了,而后我讲视图部分加上编码格式还是不行,然后我有将这两个文件用记事本打开,另存格式为utf-8。嘿嘿,中文显示出来了!
至于视图助手写出的表单生成什么样子,你可以右击你的浏览器源代码看一下。。好了这篇文章就到这吧,祝大家在开发的路上走的更精彩!