Zum Inhalt springen

Validator - Zugriff auf TS Constants

Erstellt am 16. Februar 2012 · 1 Antwort · letzte Antwort am 24. Februar 2012

Tags: Frage

tobla ·

Hallo Zusammen
In Controllern kann ich mittels

$this->settings['mySettingParam'];

auf meine gesetzten TS Konstanten zugreifen. Soweit ich im Code von Extbase sehe, besitzt die Klasse Tx_Extbase_Validation_Validator_AbstractValidator jedoch kein Attribute 'settings'. Wie kann ich in einem Validator TS Constants abfragen? Ich benötige sie, um die genauigkeit der Validation festzulegen.

tobla ·

Jemand hat die Lösung schon gefunden: #102125

Zitat:

class Tx_MyExtension_Service_TsLoader {
 
	/**
	 * Gibt fuer $_EXTKEY das 'plugin.'-Array (ohne Punkte) zurueck 
	 * 
	 * @param	string		Extension-Key z.B.'tx_extbase'
	 * @param	boolean		true für plugin TS, falls für config TS
	 * @return	array
	 */
	public static function getTsSetup($_EXTKEY, $plugin = true) {		
		// TypoScript von $_EXTKEY laden
		$settings = t3lib_div::makeInstance('Tx_Extbase_Configuration_FrontendConfigurationManager')->loadTypoScriptSetup();
		return self::removeDots($settings[$plugin ? 'plugin.' : 'config.'][$_EXTKEY.'.']);
	}
 
	/**
	 * Entfernt Punkte in dem TypoScript-Array
	 * 
	 * @return	void
	 */
	private static function removeDots($settings) {
		$conf = array();
		foreach ($settings as $key => $value)
			$conf[self::removeDotAtTheEnd($key)] = is_array($value) ? self::removeDots($value) : $value;
		return $conf;
	}
 
	/**
	 * Entfernt einen Punkt am ende von $string
	 * 
	 * @param	string		$string
	 * @return	string		$string
	 */
	private static function removeDotAtTheEnd($string) {
		return preg_replace('/\.$/', '', $string);
	}
 
}

Aufruf:

$extbaseTs = Tx_MyExtension_Service_TsLoader::getTsSetup('tx_extbase', false);