Hallo zusammen,
mein erstes ExtBase Projekt nährt sich dem Ende und als bisheriges Fazit kann ich nur festhalten: ExtBase rockt.
Ein Problem bekomme ich aber nicht gelöst, und zwar bekommt mein BackendController keinen Zugriff auf das Repository. Der Grund ist auch klar, denn für das normale fe_plugin habe ich über TS die persistence.storagePid gesetzt (welche ja scheinbar vom Repository gebraucht wird), aber diesen Wert scheint der BEController zu ignorieren.
Frage ist also: Wo kann ich die StoragePID für das Backend setzen??
Ich habe jetzt vorerst in meinem Repository eine Funktion getByPid($pid) angelegt, die nichts anderes macht, als über execSELECTquery die Datensätze auszulesen. Dabei gehen natürlich alle Einstellungen des Domain Models verloren. Es werden bspw. Datumsfelder (als DateTime angelegt) als normale Strings ausgegeben, somit kann ich diese natürlich auch nicht im view mit format.date ausgeben.
Danke im Voraus, Martin.
Hallo,
wirklich helfen kann ich Dir leider nicht. Da ich im Moment vor dem gleichen Problem stehe, hänge ich mich mal mit rein. Es ist anscheinend möglich in ext_typoscript_setup.txt mittels
config.tx_extbase {
persistence {
storagePid = <nummer>
}
}
die storagePid zu setzen. Aber ich habe auch gelesen, daß man diese Datei nicht mehr verwenden soll. Außerdem möchte ich die storagePid zur Laufzeit setzen oder zumindest einem Benutzer nicht zumuten, in einer Datei ändern zu müssen. Ich hatte im Internet auch etwas gefunden in der Art
storagePid = {$plugin.tx_myextname.persistence.storagePid} statt <nummer>. Aber was genau heißt das? Nur Typoscript-Notation? Wie könnte man die storagePid mit PHP ändern? Ich würde gerne in dieses Backen-Modul eine Möglichkeit analog Definition der Allgemeinen Datensatzsammlung einbauen.
Hallo,
ich habe jetzt erst einmal eine Standardseite angelegt und dort ins Template
module.tx_<myextension>.persistence.storagePid = <nummer>
geschrieben.
Das funktioniert natürlich nur, wenn diese Seite gerade ausgewählt wird. Gibt es wirklich keine andere Möglichkeit?#angry#
Hab's urch Zufall gefunden.. es gibt für ExtBase die Funktion getQuerySettings()->setRespectStoragePage(FALSE);
Dann muss man nur noch die PID als equal-Statement anhängen und alles läuft wie gewünscht.. hier mein komplettes Query:
public function findByString($str, $pid, $limit = 10) {
$qry = $this->createQuery();
$qry->getQuerySettings()->setRespectStoragePage(FALSE);
$qry->getQuerySettings()->setReturnRawQueryResult(TRUE);
$qry->matching(
$qry->like('name', '%'.$str.'%'), $qry->equals('pid', $pid));
$qry->setOrderings(array('tstamp' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING));
$qry->setLimit((integer)$limit);
$res = $qry->execute();
return $res;
}