Joomla - 在插件中设置字段属性

时间:2017-01-04 12:22:14

标签: php forms joomla

我创建了一个用户插件,用于在Joomla 3.6.5中扩展默认用户配置文件。 我在 profiles / profile.xml 中添加了以下字段 sample_title

<field
    name="sample_title"
    type="list"
    id="sample_title" description="sample description..." label="sample title"  default="">
    <option value="mr">Mr</option>
    <option value="mrs">Mrs</option>                
</field>

在我的插件类中,我有一个函数onContentPrepareForm($ form,$ data)。在此函数中,我尝试通过执行 $ form-&gt; setFieldAttribute('sample_title','required','true','profilecustom')来更改sample_title的必需属性; 如果我在下一行看到所需的属性值,似乎没关系,所需的是“true”。此代码 echo $ form-&gt; getFieldAttribute('sample_title','required','false','profilecustom '); 打印true,这对我来说没问题。 但是当我显示注册视图(我使用com_users中的 registration / default.php 视图)时,sample_title字段被声明为可选。在注册视图中,我们有

<?php if (!$field->required && $field->type != 'Spacer') : ?>
    <span class="optional"><?php echo JText::_('COM_USERS_OPTIONAL');?></span>
<?php endif; ?>

并为sample_title显示此范围,同时我将所需的字段属性设置为true,因此它不正常...

作为补充信息:

  • 我尝试了 $ form-&gt; setFieldAttribute('sample_title','required','true','profilecustom'); $ form-&gt; setFieldAttribute('sample_title' ,'required',true,'profilecustom'); 。结果是一样的。
  • 我按照以下文档(https://docs.joomla.org/Creating_a_profile_plugin)创建了我的插件。

我做错了吗? 我知道我可以将所需的值放在字段声明中

<field
    name="sample_title"
    type="list"
    id="sample_title" description="sample description..." label="sample_title"  default="" required="true">

但这不是我想要的。我想在某些条件下设置这个值,所以我需要以编程方式进行。

我继续调查:-)在注册视图中,如果我使用默认方式显示字段

<?php foreach ($fields as $field) : ?> 
....
<?php if (!$field->required && $field->type != 'Spacer') : ?>
<span class="optional"><?php echo JText::_('COM_USERS_OPTIONAL');?></span>
<?php endif; ?>
...
<?php endforeach;?>

$ field-&gt;必需为false但如果我尝试使用 $ sample_title_field = $ this-&gt; form-&gt; getField('sample_title','profilecustom)获取字段'); 然后 $ sample_title_field-&gt;必需是真的所以似乎 $ this-&gt; form-&gt; getFieldset($)返回的字段之间存在一些不一致fieldset-&gt; name); 以及那些使用 $ this-&gt; form-&gt; getField(...);

的人

2 个答案:

答案 0 :(得分:0)

在示例代码(https://docs.joomla.org/Creating_a_profile_plugin)中,他们执行 $ form-&gt; loadFile('profile',false); 。我用 $ form-&gt; loadFile('profile',true); 替换了这段代码,现在字段属性已正确更新。

答案 1 :(得分:0)

我使用 $ form-&gt; loadFile('profile'); ,它也可以。