即使必需属性更改为false,也需要Joomla表单字段

时间:2014-02-12 02:16:10

标签: php forms validation joomla

我有一个表单,其中包含某些实例所需的字段,而不是其他实例,因此我使用setFieldAttribute函数在编辑视图文件中动态更改了所需的属性:

if (_condition_) {
    $this->form->setFieldAttribute('transprice', 'required', 'false');
}

这有效,并反映在html输出中。

但是,当我尝试保存表单时,我仍然会:

  

警告

     

所需字段:转移价格

还有什么我需要考虑才能让它发挥作用吗?

2 个答案:

答案 0 :(得分:3)

如果没有看到您的所有代码,则很难回答这个问题,但我们最好的选择是使用javascript设置和取消设置此字段的必需部分。如果您使用的是使用Validation.js的表单,则可以通过javascript在页面上动态设置requrired类。

这么久的答案: 1)在XML中不需要它。因为如果你正在使用JForm,无论你设置什么,JForm都会依赖它。

2)动态设置所需的类,以便validation.js可以引用它并查看是否需要表单。这只是客户端验证。

3)对于服务器端验证,您需要覆盖数据模型和控制器,以(再次)确定是否需要根据您的其他动态数据来填写字段。

在此处详细了解:http://docs.joomla.org/Form_field#Client-side_validation

答案 1 :(得分:0)

如果要设置必填字段,除某些情况外,可以在“模型”的getForm-Function中动态设置此字段,但也必须取消设置过滤器。

class ComponentnameModelViewname extends JModelAdmin{

    public function getForm($data = array(), $loadData = true){

         $form = $this->loadForm('com_componentname.listviewname', 'viewname', array('control' => 'jform', 'load_data' => $loadData));

         if (empty($form)) {
               return false;
         }

         if ($condition) {
               $form->setFieldAttribute('fieldname', 'required', 'false');
               $form->setFieldAttribute('fieldname', 'filter', 'unset');
         }

         return $form;
    }

}