Undefined array key "TOO_FEW_CHARS"

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Benutzeravatar
chris1278
Mitglied
Beiträge: 4018
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Undefined array key "TOO_FEW_CHARS"

Beitrag von chris1278 »

Hallo, ich habe eine Extension geschrieben oder sagen wir so bin dabei, aber es gibt eine Fehlermeldung, mit der ich nicht klarkomme.

Es geht um das Senden einer Email. Meine Function die ich dafür geschrieben habe sieht so aus:

Code: Alles auswählen

public function send_mail($value)
{	
	//Hier laden wir den Messenger falls nicht vorhanden
	if (!class_exists('messenger'))
	{
		include($this->root_path . 'includes/functions_messenger.' . $this->php_ext);
	}
	//Hier wählen wir aus welche sprache das E-Mail Template ist. 
	$userlang	= !empty($this->user->data['user_lang']) ? $this->user->data['user_lang'] : $this->config['default_lang'];
	/** @var \messenger $messenger */
	$messenger = new \messenger(false);
	
	//Hier laden wir das template
	$messenger->template('@eumelchen_wichteln/wichteln', $userlang);
	
	//Hier setzten wir die Empfänger mail rein
	$messenger->to($value['w_email']);
	
	//Hier prüfen wir ob im Adminbereich dafür eine CC-Mail hinterlegt ist und fügen die falls vorhanden ist hinzu
	if (!empty($this->config['wichteln_cc_mail']))
	{
		$messenger->cc($this->config['wichteln_cc_mail']);
	}
	
	//Den Anti Abuse gedöns
	$messenger->anti_abuse_headers($this->config, $this->user);
	
	//Hier setzten wir die Variablen die in dem Mailtemplate verwendet werden
	$messenger->assign_vars([
		'W_SITENAME'		=> generate_board_url(),
		'W_DAY'				=> $value['w_day'],
		'W_DATE'			=> $value['w_date'],
		'W_TIME'			=> $value['w_time'],
		'W_EMAIL'			=> $value['w_email'],
		'W_TEL'				=> $value['w_tel'],
		'W_USERNAME'		=> $value['w_username'],
		'W_ADRESS'			=> str_replace(['<t>', '</t>', '<br/>'], '', $value['w_adress']),
		'W_NOTIZ'			=> str_replace(['<t>', '</t>', '<br/>'], '', $value['w_notiz']),
	]);

	$send	= $messenger->send(NOTIFY_EMAIL);

	return $send;
}
Wenn ich das Feld Notizen leer lasse bekomme ich im Header der seite imemr das hier:

Code: Alles auswählen

[phpBB Debug] PHP Warning: in file [ROOT]/includes/message_parser.php on line 1171: Undefined array key "TOO_FEW_CHARS"
Setze ich aber nur ein zeichen ein in ds feld kommt diese meldung nicht.

Ich habe schon versucht dann ein minus oder sonst was einzusetzen wenn das eingabefeld leer bleibt aber ohne erfolg.


Falls jemand ne idee hat.
Benutzeravatar
IMC
Mitglied
Beiträge: 795
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: Undefined array key "TOO_FEW_CHARS"

Beitrag von IMC »

Lade in deiner Extension die Sprachdatei posting. Ich vermute, dass die Warnmeldung im Header danach nicht mehr angezeigt wird.
Gruß, Thorsten

Meine Extensions
Verschoben von Coding & Technik nach Extension Bastelstube am 12.09.2025 19:11 durch LukeWCS

Benutzeravatar
chris1278
Mitglied
Beiträge: 4018
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Undefined array key "TOO_FEW_CHARS"

Beitrag von chris1278 »

Nein, das hat leider auch nichts gebracht.


Also ich hab mal in der message_parser nachgeschaut.

Dieser Codeblock wird wohl geladen:

Code: Alles auswählen

if ($mode === 'post')
{
	if (!$message_length || $message_length < (int) $config['min_post_chars'])
	{
		$this->warn_msg[] = (!$message_length) ? $user->lang['TOO_FEW_CHARS'] : ($user->lang('CHARS_POST_CONTAINS', $message_length) . '<br />' . $user->lang('TOO_FEW_CHARS_LIMIT', (int) $config['min_post_chars']));
		return (!$update_this_message) ? $return_message : $this->warn_msg;
	}
}
und dies ist dann die zeile 1171

Code: Alles auswählen

$this->warn_msg[] = (!$message_length) ? $user->lang['TOO_FEW_CHARS'] : ($user->lang('CHARS_POST_CONTAINS', $message_length) . '<br />' . $user->lang('TOO_FEW_CHARS_LIMIT', (int) $config['min_post_chars']));

Benutzeravatar
IMC
Mitglied
Beiträge: 795
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: Undefined array key "TOO_FEW_CHARS"

Beitrag von IMC »

So is es. Wenn die Message eine Länge von 0 hast wird der Variable $this->warn_msg[] der Text $user->lang['TOO_FEW_CHARS'] zugewiesen.

Da die Meldung "Undefined array key 'TOO_FEW_CHARS' " lautet bin ich davon ausgegangen das die Sprachdatei nicht geladen ist.
Eine andere Erklärung habe ich zur Zeit nicht.

Als nächstet würde ich testen ob eine Ausgabe an der Stelle generiert werden kann.

Code: Alles auswählen

var_dump($user->lang['TOO_FEW_CHARS']);
Die Ausgabe sollte dann so aussehen.

Code: Alles auswählen

string(38) "Die eingegebene Nachricht ist zu kurz." 

Edit:
Die Sprachdatei muss hier auf die alte Art und Weise geladen werden, da der Textabruf mit der User-Klasse erfolgt.

Code: Alles auswählen

$this->user->add_lang('posting');
Zuletzt geändert von IMC am 12.09.2025 21:33, insgesamt 1-mal geändert.
Gruß, Thorsten

Meine Extensions
Benutzeravatar
chris1278
Mitglied
Beiträge: 4018
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Undefined array key "TOO_FEW_CHARS"

Beitrag von chris1278 »

Ok. Ja hattest recht. Ich hab die posting geladen dann hats hingehauen. HAbs nur an der Falschen stelle geladen. Jetzt ist fehlermeldung weg. m
Antworten

Zurück zu „Extension Bastelstube“