ZF2 - 从表单编码标签

时间:2015-08-20 08:52:07

标签: encoding zend-framework2

当我的整个系统(页面和服务器)是法语并且具有ISO-8859-15编码时,我使用ZF2创建了一个表单。我没有权力改变这种编码,所以我想我们必须处理ANSI。

问题在于,在创建表单时,我使用这段代码:

public function createAction() {
    BootstrapLogger::info(__METHOD__);
    $this->layout( 'layout/xhtml' );
    $dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');;
    $form = new ActionForm($dbAdapter);

    $form->get('submit')->setValue('Créer');

} 

并收到此错误:

Message:
String to be escaped was not valid UTF-8 or could not be converted: Crï¿œer

我真的不明白为什么,也不知道如何避免这种情况。

正如我猜测的那样,在创建表单时,标签也会被错误编码。

  $this->add( array(
            'name' => 'act_num',
            'type' => 'Text',
            'options' => array(
                'label' => "N° action",
            ),
            'attributes' => array(
                'disabled' => 'disabled',
                'class' => 'form-control'
            )
        ));

    //ch2 - Libellé de l'action
    $this->add( array(
            'name' => 'act_label',
            'type' => 'Text',
            'options' => array(
                'label' => "Libellé de l'action",
            ),
            'attributes' => array(
                'required' => 'required',
                'class' => 'form-control'
            )
        ));

这会给我

  Nᅵ action
  Libellᅵ de l'action

与select的内容相同的问题(由SQLDb填充[在latin1_general_ci中]。)

知道如何解决这个问题吗?

非常感谢提前

1 个答案:

答案 0 :(得分:0)

尝试为表单指定不同的编码。不确定如何使用InputFilter,因为几乎没有不同的方法,但是为每个字段添加它。

'validators' => [
    [
        'name'    => 'StringLength',
        'options' => [
            'encoding' => 'UTF-8',
            'min' => 1,
        ],
    ],
],