我有一个表单,其中包含某些实例所需的字段,而不是其他实例,因此我使用setFieldAttribute函数在编辑视图文件中动态更改了所需的属性:
if (_condition_) {
$this->form->setFieldAttribute('transprice', 'required', 'false');
}
这有效,并反映在html输出中。
但是,当我尝试保存表单时,我仍然会:
警告
所需字段:转移价格
还有什么我需要考虑才能让它发挥作用吗?
答案 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;
}
}