Datei vom Dateisystem löschen - t3lib_extFileFunctions::func_delete erwartet mehr Parameter als dokumentert?
| Autor | Nachricht |
|---|---|
|
Verfasst am: 12. 01. 2012 [15:43]
|
|
|
tobla
Themenersteller
Dabei seit: 01.09.2011
Beiträge: 32
|
Hallo zusammen Wir arbeiten an einer Extension mit Extbase. Da Extbase noch kein File-Handling besitzt, müssen wir dies manuel machen. Der angemeldete User kann Bilder hochladen. Diese werden im Ordner uploads/myExt/userImage/ abgelegt. Dies funktioniert bereits so, wie es soll. Der Benutzer kann die Bilder natürlich wieder löschen. Während der Datensatz dabei, wie bei Typo3 üblich, bestehen bleibt und deleted=1 erhält, soll das Bild auch tatsächlich vom Server gelöscht werden, da hier der Speicherplatzverbrauch ab einer gewissen Usermenge ins Gewicht fallen wird. Die Klasse "t3lib_extFileFunctions" bringt die Funktion "func_delete" mit. Sie erwartet einen Parameter, nämlich ein Array mit dem Pfad zur löschenden Datei. Auszug aus t3lib_extFileFunctions http://doxygen.frozenkiwi.com/typo3/html/d2/d3f/class_8t3lib__extfilefunc_8php_source.html#l00384: PHP 00378 /**
00379 * Deleting files and folders (action=4)
00380 *
00381 * @param array $cmds['data'] is the file/folder to delete
00382 * @return boolean Returns true upon success
00383 */
00384 function func_delete($cmds) {Führe ich die Funktion aus, wirft Typo3 eine Exception: Core: Error handler (FE): PHP Warning: Missing argument 2 for ux_t3lib_extFileFunctions::func_delete(), called in myServer/public_html/typo3conf/ext/myExt/Classes/Domain/Model/File.php on line 176 and defined in myServer/public_html/typo3conf/ext/dam/binding/tce/class.tx_dam_tce_extfilefunc.php line 201 Weiss jemand von euch, warum Typo3 hier nach einem zweiten Parameter schreit, den es gemäss Klasse nicht gibt? Aufgerufen habe ich die Funktion mit der von mir definierten Funktion deleteFileFromFilesystem(): PHP public function deleteFileFromFilesystem() {
$extFileFunctions = t3lib_div::makeInstance('t3lib_extFileFunctions');
$path = t3lib_div::getFileAbsFileName($this->getPath());
$state = $extFileFunctions->func_delete(Array('data'=>$path));
return $state;
}$path gibt übrigens etwas vernünftiges zurück, an einem fehlerhaften Pfad wird es also eher nicht liegen. |
|
Verfasst am: 12. 01. 2012 [21:22]
|
|
|
aemka
Dabei seit: 23.07.2009
Beiträge: 255
|
hi, du hast dam installiert, das xclasst die Klasse t3lib_extFileFunctions und redfiniert die Methode wohl mit mehr Parametern noch mal. Die Fehlermeldung sagt eigentlich schon alles - schau mal in typo3conf/ext/dam/binding/tce/class.tx_dam_tce_extfilefunc.php. [Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 12.01.2012 um 21:23.] |
|
Verfasst am: 19. 01. 2012 [10:59]
|
|
|
tobla
Themenersteller
Dabei seit: 01.09.2011
Beiträge: 32
|
Danke. Das war der Grund für die Fehlermeldung. Leider funktioniert es immer noch nicht. Nach genauerem Anschauen habe ich festgestellt, dass die Funktion in der ersten Zeile (logischerweise ohne Fehlermeldung) auf die Nase fällt: PHP 00199 * @return boolean Returns true upon success
00200 */
00201 function func_delete($cmds, $id) {
00202 if (!$this->isInit) return FALSE;Offenbar gibt es ein Problem mit der Initialisierung. Ich führe allerdings mit PHP $extFileFunctions = t3lib_div::makeInstance('t3lib_extFileFunctions');Woran könnte dies liegen? |
|
Verfasst am: 19. 01. 2012 [11:44]
|
|
|
aemka
Dabei seit: 23.07.2009
Beiträge: 255
|
Du instanziierst mit makeInstance, aber unter Umständen initialisierst du aber nicht alles das, was die Klasse sonst noch braucht und mit dem Flag isInit abfragt. Geh doch der Sache mal nach, was da geprüft wird. |



