我想自定义输入名称,以便在验证表格
时发生错误时显示在我的视图中$this->add(array(
'name' => 'generica_descricao', // I WOULD LIKE TO CALL HIM DESCRIÇÃO
//'custom_name' => 'Descrição',
'required' => true,
'validators' => array(
array(
'name' => 'NotEmpty',
'options' => array(
'messages' => array(
'isEmpty' => 'O campo não pode ser vazio'
),
),
),
));
当我调用getMessage()作为上面的代码时
if (!$form->isValid()) {
$resultado = new Resultado(Resultado::FLAG_WARNING, $form->getMessages());
$resultado->setaRetornoLayoutErro($this->getServiceLocator());
return $resultado->getJson();
}
他们将返回
array('Descrição' => 'O campo não pode ser vazio');
然后我可以将这个数组提供给我的视图并显示正确消息的对话框,任何人都可以帮助在zend中做到这一点吗?
答案 0 :(得分:1)
我发现了一种最好的方法,创建一个新方法,扩展默认表单,从表单中的标签中获取名称。
abstract class GenericForm extends Form {
public function getMessagesTranslated($elementName = null) {
$mensagensOriginais = $this->getMessages($elementName);
foreach ($mensagensOriginais as $chave => $mensagens) {
$label = TranslateUtil::translate($this->get($chave)->getLabel());
$mensagensOriginais[$label] = $mensagensOriginais[$chave];
unset($mensagensOriginais[$chave]);
}
return mensagensOriginais;
}
答案 1 :(得分:0)
我使用翻译字段名称的方法自定义我的过滤器,这不是我想要的,但现在可以使用:
通用过滤器
abstract function convertErrorsArrayKeyToFriendlyNames($erros);
特定过滤器:
public function convertErrorsArrayKeyToFriendlyNames($erros) {
foreach ($erros as $chave => $valor) {
if ($chave == 'generica_descricao') {
$erros['Descrição'] = $erros[$chave];
unset($erros[$chave]);
} else if ($chave == 'generica_ordem') {
$erros['Ordem'] = $erros[$chave];
unset($erros[$chave]);
} else if ($chave == 'generica_ativo') {
$erros['Ativo'] = $erros[$chave];
unset($erros[$chave]);
}
}
return $erros;
}
并在控制器中
if (!$form->isValid()) {
$erros = $filtro->convertErrorsArrayKeyToFriendlyNames($form->getMessages());
$resultado = new Resultado(Resultado::FLAG_WARNING, $erros);
$resultado->setaRetornoLayoutErro($this->getServiceLocator());
return $resultado->getJson();
}