<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://de.contaowiki.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://de.contaowiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Staen</id>
		<title>Contao Community Documentation - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://de.contaowiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Staen"/>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Spezial:Beitr%C3%A4ge/Staen"/>
		<updated>2026-05-02T00:27:08Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>https://de.contaowiki.org/Feldname_an_Callback_%C3%BCbergeben</id>
		<title>Feldname an Callback übergeben</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Feldname_an_Callback_%C3%BCbergeben"/>
				<updated>2010-03-03T11:39:18Z</updated>
		
		<summary type="html">&lt;p&gt;Staen: Die Seite wurde neu angelegt: „category:Dev_Snippets Wenn ich ich viele Felder in meinem Backend-Formular per load_callback oder save_callback manipulieren will, müsste ich eigentlich für…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Dev_Snippets]]&lt;br /&gt;
Wenn ich ich viele Felder in meinem Backend-Formular per load_callback oder save_callback manipulieren will, müsste ich eigentlich für jedes Feld eine eigene Callback-Funktion schreiben. Wenn ich aber in jedem Fall prinzipiell die selbe Manipulation vornehme (z.B. die Daten statt aus der Datenbank woanders einzulesen), ist es sinnvoller, immer die selbe Funktion zu nutzen. Leider übergibt TYPOlight diesem callback aber nicht den Feldnamen.&lt;br /&gt;
&lt;br /&gt;
Dank der PHP Methode &amp;quot;__call&amp;quot; kann ich aber der Klasse diese Möglichkeit nachrüsten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
  /**&lt;br /&gt;
   * Automatic callback functions for every field&lt;br /&gt;
   * loads or saves the values   &lt;br /&gt;
   */     &lt;br /&gt;
  public function __call($name,$args) {&lt;br /&gt;
    list($type,$field) = explode('_',$name,2);&lt;br /&gt;
    switch($type) {&lt;br /&gt;
      case 'load': &lt;br /&gt;
        return $this-&amp;gt;load_field($field,$args[0]);&lt;br /&gt;
        break;&lt;br /&gt;
      case 'save':&lt;br /&gt;
        return $this-&amp;gt;save_field($field,$args[0]);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Methoden &amp;quot;load_field&amp;quot; und &amp;quot;save_field&amp;quot; bekommen nun als ersten Parameter den Feldnamen übergeben. Ich muss nur dafür sorgen, dass das callback der Felder der Form load_''feldname'' bzw. save_''feldname'' folgt.&lt;br /&gt;
&lt;br /&gt;
Wenn ich z.B. allen Feldern der Tabelle tl_page ein callback mitgeben will, kann ich es so machen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
foreach ($GLOBALS['TL_DCA']['tl_page']['fields'] as $strFieldName =&amp;gt; $arrField)&lt;br /&gt;
{&lt;br /&gt;
  $GLOBALS['TL_DCA']['tl_page']['fields'][$strFieldName]['load_callback'][] = array('DMAPublishCallback','load_'.$strFieldName);&lt;br /&gt;
  $GLOBALS['TL_DCA']['tl_page']['fields'][$strFieldName]['save_callback'][] = array('DMAPublishCallback','load_'.$strFieldName);&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Staen</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Feld_im_DCA_disablen,_aber_trotzdem_Werte_%C3%BCbermitteln</id>
		<title>Feld im DCA disablen, aber trotzdem Werte übermitteln</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Feld_im_DCA_disablen,_aber_trotzdem_Werte_%C3%BCbermitteln"/>
				<updated>2010-03-03T11:24:08Z</updated>
		
		<summary type="html">&lt;p&gt;Staen: Die Seite wurde neu angelegt: „Category:Dev_Snippets Durch die Einstellung  &amp;lt;nowiki&amp;gt;$GLOBALS['TL_DCA']['&amp;lt;/nowiki&amp;gt;''tl_table''&amp;lt;nowiki&amp;gt;']['fields']['&amp;lt;/nowiki&amp;gt;''field''&amp;lt;nowiki&amp;gt;']['eval']['disa…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev_Snippets]]&lt;br /&gt;
Durch die Einstellung&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$GLOBALS['TL_DCA']['&amp;lt;/nowiki&amp;gt;''tl_table''&amp;lt;nowiki&amp;gt;']['fields']['&amp;lt;/nowiki&amp;gt;''field''&amp;lt;nowiki&amp;gt;']['eval']['disabled'] = true;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ist es möglich ein Feld zu sperren, so dass es zwar ausgegraut angezeigt wird, aber nicht geändert werden kann.&lt;br /&gt;
&lt;br /&gt;
Leider hat dies auch den Effekt, dass a) die Feldwerte nicht abgeschickt werden und b) auch für diese Felder keine Callbacks ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
Wenn ich also die Feldwerte mit generierten Werten belegen will, selbige aber nicht ändern lassen will, gebe ich dem Feld ein load_callback, welches die Vorgabewerte generiert und zurückgibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
public function load_field($varValue) {&lt;br /&gt;
  // Wert generieren&lt;br /&gt;
  return $varValue;&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der eigentliche Trick ist aber, dem Feld nicht per DCA die Einstellung &amp;quot;disabled&amp;quot; mitzugeben, sondern statt dessen ein 'input_field_callback', welches ermöglicht, das Feld selber zu generieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
  public function disabledField($dc)&lt;br /&gt;
  { &lt;br /&gt;
    $arrData = $GLOBALS['TL_DCA']['tl_page']['fields'][$dc-&amp;gt;field];&lt;br /&gt;
    $strClass = $GLOBALS['BE_FFL'][$arrData['inputType']];&lt;br /&gt;
    $arrData['eval']['required'] = ($this-&amp;gt;varValue == '' &amp;amp;&amp;amp; $arrData['eval']['mandatory']) ? true : false;&lt;br /&gt;
    $arrData['eval']['disabled'] = true;&lt;br /&gt;
    $objWidget = new $strClass($this-&amp;gt;prepareForWidget($arrData,$dc-&amp;gt;inputName,self::$_field_values[$dc-&amp;gt;field],$dc-&amp;gt;field,$dc-&amp;gt;table));&lt;br /&gt;
    return '&amp;lt;div' . ($arrData['eval']['tl_class'] ? ' class=&amp;quot;' . $arrData['eval']['tl_class'] . '&amp;quot;' : '') . '&amp;gt;' . $objWidget-&amp;gt;parse() . $datepicker . (($GLOBALS['TL_CONFIG']['oldBeTheme'] || !$objWidget-&amp;gt;hasErrors()) ? $this-&amp;gt;help() : '') . '&lt;br /&gt;
&amp;lt;/div&amp;gt;';&lt;br /&gt;
  }&lt;br /&gt;
  &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun muss ich lediglich noch per &amp;quot;save_callback&amp;quot; dafür sorgen, dass wirklich die generierten Werte gespeichert werden (Ich könnte da sogar die selbe Funktion nutzen wie für den load_callback), damit mir keiner per HTML-Manipulation doch andere Werte einschmuggelt.&lt;/div&gt;</summary>
		<author><name>Staen</name></author>	</entry>

	</feed>