2017-01-04 1 views
0

Ich habe ein Benutzer-Plugin für die Erweiterung Standard-Benutzerprofil in Joomla 3.6.5 erstellt. Ich fügte das folgende Feld hinzu sample_title in profile/profile.xml.Joomla - Einstellung Feldattribut in einem Plugin

<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> 

in meiner Plugin-Klasse habe ich eine Funktion onContentPrepareForm ($ form, $ data). In dieser Funktion versuche ich das erforderliche Attribut von sample_title zu ändern, indem ich $ form-> setFieldAttribute ('sample_title', 'required', 'true', 'profilecustom'); Wenn ich den erforderlichen Attributwert in der nächsten Zeile sehe, scheint es in Ordnung, die erforderliche ist "wahr". Dieser Code echo $ form-> getFieldAttribute ('sample_title', 'erforderlich', 'falsch', 'Profilbenutzer'); druckt, was für mich in Ordnung ist. ABER wenn ich die Registrierungsansicht anzeigen (ich verwende die Registrierung/default.php Ansicht von com_users) das sample_title Feld wird als optional deklariert. In der Registrierung Ansicht haben wir

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

und diese Spanne für sample_title angezeigt, während ich das gewünschte Feld Attribut auf true gesetzt, so dass es nicht in Ordnung ist ...

Als zusätzliche Information:

  • Ich versuchte $ form-> setFieldAttribute ('sample_title', 'erforderlich', 'wahr', 'profilecustom'); und $ form-> setFieldAttribute ('sample_title', 'required', true, 'profilecustom');. Das Ergebnis ist das gleiche.
  • Ich folgte der folgenden Dokumentation (https://docs.joomla.org/Creating_a_profile_plugin), um mein Plugin zu erstellen.

Mache ich etwas falsch? Ich weiß, dass ich den gewünschten Wert in der Felddeklaration

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

setzen kann, aber das ist nicht das, was ich will. Ich möchte diesen Wert unter einigen Bedingungen festlegen, also muss ich es programmgesteuert tun.


Ich setzte meine Untersuchung :-) In der Registrierung Ansicht, wenn ich die Standardmethode verwenden, um die Felder

<?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- $ anzuzeigen> erforderlich falsch ist, aber wenn ich versuche, Holen Sie sich das Feld mit $ sample_title_field = $ this-> form-> getField ('sample_title', 'profilecustom'); dann $ sample_title_field-> erforderlich ist wahr, so Es scheint, es gibt einige Inkonsistenzen zwischen den Feldern zurückgegeben von $ this-> form-> getFieldset ($ fieldset-> name); und diejenigen, die mit $ this-> form-> getField (...) erhalten;

Antwort

Verwandte Themen