Also vielleicht nochmal zur Vereinfachung:
Ich muss nur irgendwie an den Value der einzelnen Items kommen.
Rückgabewert Feldtyp "select"
Wie versuchst du denn derzeit da ran zu kommen?
Ich hab in meiner Klasse in Domain/Model/MyClass.php die Variable "auswahl" (die wie im 1. Post zu sehen ist, das Select-Feld repräsentiert), bisher als string und int ausprobiert, da ich anfangs intuitiv dachte, dass der Value dann darin abgespeichert wird.
Und die hab ich dann ganz normal im Controller übergeben, um sie im View auszugeben, allerdings ist diese Variable dann immer leer.
Viele andere Versuche habe ich bisher nicht gestartet, da ich nicht weiß wie es funktionieren könnte. Und auch nach stundenlangem googlen hab ich nicht wirklich etwas bracuhbares gefunden 🙁
Ich glaube nicht, dass Dir hier jemand weiterhelfen kann, wenn Du keinen Code postest ;-)
Okay dann mal hier die betroffenen Codestellen:
Classes/Domain/Model/MyClass.php:
/*
* @var string
*/
protected $question_type = '';
[...]
public function __construct($question_type = '', $name, $frage = '', $subtext = '', $antworten = '') {
$this->setQuestion_type($question_type);
$this->setName($name);
$this->setFrage($frage);
$this->setSubtext($subtext);
$this->setAntworten($antworten);
}
public function setQuestion_type($question_type) {
$this->question_type = (string)$question_type;
}
public function getQuestion_type() {
return $this->question_type;
}
[...]
ext_tables.php:
[...]
'columns' => array(
'question_type' => array(
'label' => 'Art der Frage',
'config' => array(
'type' => 'select',
'items' => array(
array('Choice: Eine Antwort', '1'),
array('Choice: Mehrere Antworten', '2'),
),
'default' => '1',
)
),
[...]
'types' => array(
'1' => array('showitem' => 'question_type, name, subtext, frage, antworten'),
'2' => array('showitem' => 'question_type, name, subtext, frage, antworten'),
)
[...]
ext_tables.sql:
[...]
question_type varchar(255) DEFAULT '' NOT NULL,
[...]
Wenn ich dann alles an den View übergebe und will mir im Browser den Inhalt von question_type ausgeben lassen, ist dieser immer leer.
Brauche ich da irgendwie noch eine weitere Variable, um den "Value" abzuspeichern?
Da hammas ja schon :-)
Wenn dein Datenbankfeld 'question_type' heisst, muss der Getter bzw. Setter getQuestionType() bzw. setQuestionType() heissen (es sei denn Du hast im TS ein anderes Mapping definiert).
EDIT: und das Property selbst muss natürlich ebenfalls as $questionType definiert werden
Hey,
Schonmal vielen Dank für deine Antworten 🙂
Meintest du, dass ich überall außer in der ext_tables.sql "question_type" in "questionType" und beim Getter und Setter in "getQuestionType" und "setQuestionType" abändern soll?
Dann kommt ja aber beim Erstellen einer neuen Frage im Backend ein SQL-Error, das questionType nicht bekannt ist.
Nur im Model umbenennen! Am ext_tables.sql und dem entsprechenden TCA-Eintrag ändert sich nichts. (Ich schätze du hast den das TCA-Feld auch umbenannt, darum der Fehler)
Jetzt läuft es: Vielen, vielen Dank 🙂
Kannst du mir aber vielleicht noch ganz kurz erklären, wieso in dem Fall das Property und der Datenbankeintrag unterschiedliche Namen haben (müssen)?
Weil das einfach in Extbase standardmässig so definiert ist.
feldname_mit_underscore wird immer zu $feldnameMitUnderscore bzw. getFeldnameMitUnderscore() im Model
Wenn dein Property anders heissen soll, kannst Du diesen Default so ändern:
plugin.tx_deineext {
persistence {
classes {
Tx_DeineExt_Domain_Model_Dingenskirchen {
mapping {
columns {
feldname_mit_underscore.mapOnProperty = (hier kommt dann hin wie dein Property im Model heissen soll)
}
}
}
}
}
}
Alles klar,
vielen Dank für deine Hilfe!