Php 在表单displayFieldError上链接js操作

Php 在表单displayFieldError上链接js操作,php,forms,atk4,Php,Forms,Atk4,我有一个表单,在提交时使用displayFieldError显示字段错误。我需要在某些错误条件下显示/隐藏容器,是否可以在容器上链接js操作?敏捷工具包中的所有视图都带有jquery类,能够调用jquery,并且可以链接 但是扩展视图类的对象必须在其HTML模板中实现ID=NAME属性 下面是一个视图示例,一个不会隐藏的文本对象: $t=$this->add('Text')->set('Press Buton To Hide Me'); $b=$this->add('But

我有一个表单,在提交时使用
displayFieldError
显示字段错误。我需要在某些错误条件下显示/隐藏容器,是否可以在容器上链接js操作?

敏捷工具包中的所有视图都带有jquery类,能够调用jquery,并且可以链接

但是扩展视图类的对象必须在其HTML模板中实现ID=NAME属性

下面是一个视图示例,一个不会隐藏的文本对象:

 $t=$this->add('Text')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained
 $t=$this->add('P')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained
很明显,文本对象具有javascript功能,但本身无法工作,即使附加
click
命令也无法工作

下面是视图的另一个示例,一个扩展的HtmleElement类隐藏:

 $t=$this->add('Text')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained
 $t=$this->add('P')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained
检查这两个来源,您将立即看到差异

因此,请确保您所引用的容器是视图类的类扩展,并且其关联模板中有一个
id=”“
实现


我不确定还有其他更简单的方法。

敏捷工具包中的所有视图都带有jquery类,能够调用jquery,并且可以链接

但是扩展视图类的对象必须在其HTML模板中实现ID=NAME属性

下面是一个视图示例,一个不会隐藏的文本对象:

 $t=$this->add('Text')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained
 $t=$this->add('P')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained
很明显,文本对象具有javascript功能,但本身无法工作,即使附加
click
命令也无法工作

下面是视图的另一个示例,一个扩展的HtmleElement类隐藏:

 $t=$this->add('Text')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained
 $t=$this->add('P')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained
检查这两个来源,您将立即看到差异

因此,请确保您所引用的容器是视图类的类扩展,并且其关联模板中有一个
id=”“
实现


我不确定还有其他更简单的方法。

扩展和重新定义方法是面向对象开发中的正常做法。此外,通过创建以下内容,您可以在全球范围内实现这一点:

class Form extends Form_Basic {
    function displayFieldError(){
        .. your actions ..
    }
}

这将在整个项目中起作用,并且不会失去任何功能。

扩展和重新定义方法是面向对象开发中的正常做法。此外,通过创建以下内容,您可以在全球范围内实现这一点:

class Form extends Form_Basic {
    function displayFieldError(){
        .. your actions ..
    }
}

这将在整个项目中起作用,不会丢失任何功能。

什么类型的容器?尝试调用
$this->downCall('loadPOST')$此->下行('validate')。然后你可以处理
$form->errors
。您还可以使用表单_Basic::submit的副本完全重新定义submit(),然后按您喜欢的方式对其进行调整。问题不在于容器,而在于
displayFieldError
。在内部,它执行这样的操作
$f->js()->atk4_form('fieldError',$field->short_name,$message)->execute()$this->downCall('loadPOST')$此->下行('validate')。然后你可以处理
$form->errors
。您还可以使用表单_Basic::submit的副本完全重新定义submit(),然后按您喜欢的方式对其进行调整。问题不在于容器,而在于
displayFieldError
。在内部,它执行这样的操作
$f->js()->atk4_form('fieldError',$field->short_name,$message)->execute()beforeModify()
函数
fieldError
的版本,并适当地链接对它的附加js调用。我对容器没有问题(它有id),但我问是否有一种方法可以将js添加到错误处理中,而无需完全重新实现
displayFieldError
方法,您可能想在这里检查我的答案:注意
beforeModify()
函数,它实现了
fieldError
的js()版本,并适当地链接附加的js调用。我对容器没有问题(它有id)但是我问是否有一种方法可以将js添加到错误处理中,而无需完全重新实现
displayFieldError
方法。