public function error($field, $text = null, array $options = [])
{
if (substr($field, -5) === '._ids') {
$field = substr($field, 0, -5);
}
$options += ['escape' => true];
$context = $this->_getContext();
if (!$context->hasError($field)) {
return '';
}
$error = (array) $context->error($field);
if (is_array($text)) {
$tmp = [];
foreach ($error as $k => $e) {
if (isset($text[$k])) {
$tmp[] = $text[$k];
} elseif (isset($text[$e])) {
$tmp[] = $text[$e];
} else {
$tmp[] = $e;
}
}
$text = $tmp;
}
if ($text !== null) {
$error = $text;
}
if ($options['escape']) {
$error = h($error);
unset($options['escape']);
}
if (is_array($error)) {
if (count($error) > 1) {
$errorText = [];
foreach ($error as $err) {
$errorText[] = $this->formatTemplate('errorItem', ['text' => $err]);
}
$error = $this->formatTemplate('errorList', ['content' => implode('', $errorText)]);
} else {
$error = array_pop($error);
}
}
return $this->formatTemplate('error', ['content' => $error]);
}