Zend Framework 2 在viewhelper中获取 ServiceLocator

实现ServiceLocatorAwareInterface可以直接在viewHelper中访问ServiceLocator

这样我们可以直接在view中访问ServiceLocator对象

Zend Framework 2 为不同的模块指不同的 basepath

这个需求,多般发生在管理页面与前台页面没有做分离的情况下,实现方法类似 不同模块使用不同的布局一样。

在将要修改Basepath的模块增如下代码:

修改Module.php文件:

 

Zend framework 2 常用查询

基本上单表查询条件都能满足,只有像Left Join这些查询有时候会有两个Bug出现

查询主要用的对象

来个简单的先:

这个很简单的,只是实现了一个简单的查询:

也可以用以下代码实现:

那么写我只是为了可以添加更复杂的查询条件

稍后再写。。。

 

 

在字段查询时使用函数:

 

Zend framework 2 实现__construct一样的功能

在php中,构造方法有两种形式:

  1. 与类同名的方法,此种已经在新版里被废弃,所以我们不考虑使用这种
  2. __construct()魔术方法,此方法表示在类声明时调用,亦称为PHP的构造方法,

在php中,若手动添加了__construct时,父类的__construct方法不会被自动调用,需要手动使用parent::__construct()调用父类的构造方法,在zf2中,主要依赖的是事件驱动,所以使用__construct是不管用的。

如果只是普通的需要,添加__construct再调用parent__construct,但一般我们需要在构造方法里写一些事件调用,比如非常常用的:$this->getServiceLocator()->get()。所以我们需要在事件管理器注册好了,再调用

如下所示:

此时的init()方法,就相当于__construct方法,此方法的执行是在其它的方法之前。

其实很简单,就是事件驱动的作用

Zend Framework 2 图片验证码

图片验证码在做Web开发上,是再普遍不过的东西了。可以用来防止别人暴力破解密码,也可以用来防止别人访问过快。

Zend把图片验证分成两部分来实现:

1. Zend\Captcha\AbstractWord    实现了要画在图片上的文字
2. Zend\Captcha\Image    实现了将文字画在图片上

Zend\Captcha\Image 继承 Zend\Captcha\AbstractWord

所以如果你想实现自己的验证码类,大可以直接继承Zend\Captcha\AbstractWord并实现往图片上画文字的方法。

直接上代码:

使用方法:

调用完成会生成一张图片在 setImgDir 这个方法设置的地址

Zend framework 2 多语言配置

Zend Framework 2 默认支持国际化I18n,直接在Zend Studio里建的工程,也是默认就开启了多语言配置,只需要更改 ‘locale’ => ‘en_US’ 就可以修改网站显示language目录下面的.mo里的语言。但是没有找到语言切换相关的配置,比如根据浏览器的语言自动切换语言显示,或者根据用户指定的语言显示…

配置 module.config.php:

语言初始化在框架加载的时就可以做了,所以可以直接在 Module.php bootstrap里写。这里有一个优先级的问题:

语言可以通过三种途径方式获得:

  1. 用户主动设置时
  2. 用户主动设置过,已保存在Session中
  3. 用户未主动设置,Session中也未保存语言,此时可从 Http协议头里拿到 Accept-Language 的值作为首选语言项

优先级别最高的是用户主动设置,其次是Session中已保存的语言,当前两者都没有的时候才选择 协议头里的值作为语言参考项。而当这三项都拿不到的时候,则会使用默认配置 local 填写的值。

当这里配置完成,在URL上使用?language=zh-CN或者 ?language=zh-TW即可切换语言。切换失败也就是传入参数无法与配置里的匹配时,默认使用配置 local 的值

Zend Framework 2.3 验证消息本地化设置

Zend Framework 2 几个版本里,本地验证消息本地化实现不尽相同,此方法我仅在 Zend Framework 2.3 上使用并正常工作。验证常规表单使用 InputFilter 的时候,错误的消息默认使用英文 ,但我们需要使用其它语言的时候就需要自己在 Module.php 添加想应的代码:

同时module.config.php里也有点修改,这里不修改在上面的get (“MvcTranslator”)无法获取

 

把框架文件里和 Library 同级的 resources 代码拷贝到 vendor/zendframework/zendframework/

并设置好需要设置的语言  zh 和 zh_CN。

Zend Framework 2 \Zend\Http\Client\Adapter\Curl 使用示例

curl是非常容易使用,也是很常用的网络工具之一。要使用curl需要在编译时使用参数–with-curl打开。windows下需要加载php_curl.dll库。
关curl的使用不管是Get还是Post网上一搜,一大把哦,比如下面这段就是我在Baidu上随便搜索的:

Zend Framework 2对Curl进行了一个封装,\Zend\Http\Client\Adapter\Curl,其实我觉得这个封装有点过了,一点也不好使,最后还是使用原生的来得快