日期:2014-05-20  浏览次数:20834 次

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。嘿嘿,中文显示出来了!

 

至于视图助手写出的表单生成什么样子,你可以右击你的浏览器源代码看一下。。好了这篇文章就到这吧,祝大家在开发的路上走的更精彩!