Seite 1 von 1
Benutzerdefinierte Profilfelder per migration anlegen
Verfasst: 27.03.2016 19:51
von Kirk
Hallo
Ich habe für das Board3 Portal ein Wettermodul erstellt, dazu benötige ich 2 Benutzerdefinierte Profilfelder die ich per migration anlege.
Bei der Installation dieser EXT werden zwar diese beiden Felder angelegt, aber bei einem Feld möchte ich bei "Spezifische Optionen der Feldart" unter "Zulässige Werte:" die Option
Nur Alphanumerische Zeichen haben.
In der migrationsdatei habe ich u.a. folgendes eingetragen:
Dies gibt mir aber das hier aus:
Nur Alphanumerische und Unterstriche _
unter
root/phpbb/db/migration/data/v310/profilefield_googleplus.php
ist der selbe Wert eingetragen und gibt auch
Nur Alphanumerische Zeichen aus, was ist an meiner migrationsdatei falsch?
Noch eine Frage, wie kann man die Feld Beschreibung in der migrationsdatei mit Sprachvariablen anlegen?
Ich habe zwar auf .com dieses
Thema gefunden, blicke da aber noch nicht ganz durch.
Hier die beiden Datein:
https://www.phpbb.de/support/pastebin.p ... iew&s=1568
https://www.phpbb.de/support/pastebin.p ... iew&s=1569
Re: Benutzerdefinierte Profilfelder per migration anlegen
Verfasst: 27.03.2016 23:53
von gn#36
\w
steht für ein beliebiges alphanumerisches Zeichen oder einen Unterstrich (wenn man mal von Umlauten und ähnlichem absieht ist das also sowas ähnliches wie A-Za-z0-9_
), von daher ist diese Bezeichnung dafür eigentlich schon richtig.
Ich weiß nicht was phpBB sonst standardmäßig verwendet, aber du könntest statt [\w]+
mal [^\W_]+
probieren (Achtung: Hier ist das W groß!), das sollte von der Validierung her auf jeden Fall das Ergebnis liefern was du suchst, egal wie es nun bezeichnet wird: Das ^
ist eine Negation, der die Selektion umkehrt, das \W
für sich gesehen passt auf alles außer alphanumerischen Zeichen und Unterstrichen, der Unterstrich passt auf den Unterstrich. Hierdurch dürfen nur Zeichen enthalten sein, die alphanumerisch sind.
EDIT: In der Datenbank bei mir steht für das Google+ Profilfeld aber als Validierung [a-zA-Z0-9]+
drin. Möglicherweise gibt's irgendwo noch ein Update in einer anderen Migration, die das nachträglich ändert. Das erlaubt auch keine Umlaute sondern nur A-Z und 0-9.
Re: Benutzerdefinierte Profilfelder per migration anlegen
Verfasst: 28.03.2016 09:43
von Kirk
Dieses hier [^\W_]+
liefert den Wert Alle Zeichen, bei mir in der Datenbank steht für das Google+ Profilfeld [a-zA-Z0-9]+
drin, dies habe in die Datei eingetragen nun passt der Wert.
Weder auf .com noch bei wiki.phpbb.com hatte ich was gefunden wo steht welcher Wert was erzeugt.
Jetzt muss ich noch das mit Sprachvariablen rausfinden.
Re: Benutzerdefinierte Profilfelder per migration anlegen
Verfasst: 28.03.2016 18:19
von gn#36
Solange
[^\W_]+
in der Datenbank steht sind die Werte richtig, egal was phpBB da nun für einen Text zu anzeigt.
Für die Sprachdaten bei Dropdownlisten o.ä. musst du dieses Array befüllen:
Code: Alles auswählen
/**
* Language data should be in array -> each language_data in separate key
* array(
* array(
* 'option_id' => value,
* 'field_type' => value,
* 'lang_value' => value,
* ),
* array(
* 'option_id' => value,
* 'field_type' => value,
* 'lang_value' => value,
* ),
* )
*/
protected $profilefield_language_data;
Den Aufbau verstehst du vermutlich am besten, indem du mal einen Blick in die Daten der Datenbank wirfst. Es muss pro Eintrag in der Liste ein array in dem Array geben, aber nicht einen pro Sprache. lang_value ist die Übersetzung des Eintrags (da gehört dann eine Sprachvariable rein). Das ganze ist gedacht für Profilfelder mit vorgegebenen Auswahlmöglichkeiten. field_type ist der Typ des Eintrags (z.B.
profilefields.type.dropdown
) option_id ist die ID der Auswahl und sorgt für die Sortierung der Liste. Also wenn du z.B. eine Liste mit 2 Einträgen anlegen willst:
Code: Alles auswählen
protected $profilefield_language_data = array(
array(
'option_id' => 0, //Oberer Eintrag
'field_type' => 'profilefields.type.dropdown', //Dropdownlistenelement
'lang_value' => 'KIRK_PF_OPTION_OBERER_EINTRAG',
),
array(
'option_id' => 1, // 2. Eintrag
'field_type' => 'profilefields.type.dropdown',
'lang_value' => 'KIRK_PF_OPTION_UNTERER_EINTRAG',
),
);
Wenn es dir nur um die Bezeichnung des Profilfelds geht, dann brauchst du lediglich eine Sprachvariable die den selben Namen trägt wie das Profilfeld (es sei denn, der Name beginnt mit phpbb_, in dem Fall musst du den Teil weglassen bei der Bezeichnung der Sprachvariablen). Also sprich: Wenn dein Profilfeld den Namen kirk_meinprofilfeld trägt, dann brauchst du eine Sprachvariable namens
KIRK_MEINPROFILFELD
für die Übersetzung der Bezeichnung.
Re: Benutzerdefinierte Profilfelder per migration anlegen
Verfasst: 28.03.2016 19:37
von Kirk
Im Persöhnlichen Bereich wird einem je nach Sprache das Profilfeld (jeweils ein Einzeiliges Textfeld) korrekt angezeigt.
Es geht mir um die Feld-Beschreibung also die dem Benutzer angezeigte Beschreibung für das Feld.
Re: Benutzerdefinierte Profilfelder per migration anlegen
Verfasst: 28.03.2016 23:32
von gn#36
So wie es aussieht lässt die Migration die von sich aus leer. Siehe
https://www.phpbb.de/infos/3.1/xref/php ... e.html#l85
Code: Alles auswählen
'lang_name' => $lang_name,
'lang_explain' => '',
'lang_default_value' => '',
Du musst beim Insert das lang_explain Feld füllen, denke ich. Du kannst dir also deine eigene Funktion
create_custom_field
erstellen, die die vorhandene ersetzt, oder du ergänzt die Daten nachträglich mit einer eigenen custom function in der DB.
Re: Benutzerdefinierte Profilfelder per migration anlegen
Verfasst: 29.03.2016 19:06
von Kirk
Ich habe in meiner migrations Datei dieses
public function create_custom_field()
mit eingefügt und
'lang_explain'
gefüllt, jetzt wird die Feld-Beschreibung in der jeweiligen Sprache angezeigt.
Danke für deine Hilfe!
