gpt4 book ai didi

php - Zend 错误字符串

转载 作者:搜寻专家 更新时间:2023-10-31 21:44:48 25 4
gpt4 key购买 nike

我这里有一个代码可以完美地调用我的 Errors in group,但我想添加一些东西。

$this->setDecorators(array(            'FormErrors',            'FormElements',        array('HtmlTag',array('tag' => 'dl','class' => 'zend_form')),            'Form'           ));

每次调用此错误。 我只想在 dl 上方或下方添加一个文本..thats says

“ARLET 警报错误错误”每次调用 Zend Errors 时只需一个简单的字符串

有什么想法吗?

最佳答案

您可以创建自定义装饰器。

App_Form_Decorator_AdditionalError
extends Zend_Form_Decorator_Abstract
{
protected $_options = array(
'additionalError' => 'ERROR'
);

public function render( $content )
{
$element = $this->getElement();
if( $element->isErrors() )
{
$element->addError( $this->getOption( 'additionalError' ) );
}

return $content;
}
}

但这只会将一个额外的错误插入错误堆栈。您可以通过将错误实际添加到 $content 中而不是简单地使用 addError() 添加错误来获得更多乐趣。 (并且可能扩展 HtmlTag 装饰器而不是 Abstract 装饰器)。但我现在懒得做一个完整的例子。对不起。也许我明天会回到这个问题上。尽管如此,希望这对您有所帮助/启发。

顺便说一句;上面的用法是:

$this->setDecorators(array(
array(
'AdditionalError',
array( 'additionalError' => 'Some additional error message' )
)
'FormErrors',
// etc.

编辑:
好吧,我睡了个好觉,这里有一个更好的建议。它扩展了 Desciption 以利用已经定义的选项,如 tagescape 等。它甚至是可翻译的(耶!!:))。这个添加了一个 setError 选项并覆盖了 render 方法。 虽然它未经测试,因此您可能会遇到一些错误和/或语法错误。

class App_Form_Decorator_AdditionalError
extends Zend_Form_Decorator_Description
{
protected $_error = 'error';

public function setError( $error )
{
$this->_error = (string) $error;
return $this;
}

public function getError()
{
if( null !== ( $error = $this->getOption( 'error' ) ) )
{
$this->setError( $error );
$this->removeOption( 'error' );
}

return $this->_error;
}

public function render( $content )
{
$element = $this->getElement();
$view = $element->getView();
if( !$element->isErrors() || null === $view )
{
return $content;
}

$error = $this->getError();
$error = trim( $error );

if( !empty( $error ) && ( null !== ( $translator = $element->getTranslator() ) ) )
{
$error = $translator->translate( $error );
}

if( empty( $error ) )
{
return $content;
}

$separator = $this->getSeparator();
$placement = $this->getPlacement();
$tag = $this->getTag();
$class = $this->getClass();
$escape = $this->getEscape();

$options = $this->getOptions();

if( $escape )
{
$error = $view->escape( $error );
}

if( !empty( $tag ) )
{
require_once 'Zend/Form/Decorator/HtmlTag.php';
$options[ 'tag' ] = $tag;
$decorator = new Zend_Form_Decorator_HtmlTag( $options );
$error = $decorator->render( $error );
}

switch( $placement )
{
case self::PREPEND:
return $error . $separator . $content;
case self::APPEND:
default:
return $content . $separator . $error;
}
}
}

用法:

public function init()
{
$this->addPrefixPath( 'App_Form', 'App/Form' ); // or any other namespace you will use
$this->setDecorators( array(
'FormErrors',
'FormElements',
array(
'AdditionalError',
array( 'error' => 'You messed up! :)', 'placement' => 'prepend', 'tag' => 'div', 'class' => 'additional-error' )
),
array(
'HtmlTag',
array( 'tag' => 'dl', 'class' => 'zend_form' )
),
'Form'
) );
}

编辑 2:
我现在已经对其进行了测试,并删除了语法错误和错误。现在似乎按预期工作。

关于php - Zend 错误字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5490151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com