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