it-swarm.com.de

Direktes Löschen von Dateien aus dem Joomla-Site-Backend ohne Papierkorb

Ich möchte wissen, wie man eine bestimmte Datei oder Dateiliste direkt aus dem Joomla 3.0-Backend löscht, ohne dass sie zuerst in den Papierkorb verschoben wird.

der aktuelle Code sieht folgendermaßen aus:

if ($this->state->get('filter.state') == -2 && $canDo->get('core.delete'))
{
JToolbarHelper::deleteList('', 'spadonors.delete', 'JTOOLBAR_EMPTY_TRASH');
}       
elseif ($canDo->get('core.edit.state'))
{
JToolbarHelper::trash('spadonors.trash');
}

Ich habe diesen folgenden Code von oben entfernt:

$this->state->get('filter.state') == -2

Aber als ich versucht habe, den Papierkorb zu leeren, erhalte ich die folgende Meldung:

Warnung Löschen nicht erlaubt

Benötigen Sie Hilfe zu diesem Thema.

3
indy

Der einfachste Weg würde Code-Änderungen an zwei Stellen erfordern. Das erste wäre, die if/else-Logik zu entfernen und nur die Schaltfläche zu laden, die das Löschen des Datensatzes und das Zuweisen einer geeigneteren Bezeichnung wie 'Löschen' handhabt:

JToolbarHelper::trash('spadonors.delete', Text::_('COM_MYCOMPONENT_DELETE'));

Als nächstes müssen Sie die Löschmethode in Ihrem SpaDonors-Controller überschreiben, um die erforderliche Logik zu handhaben. Das Folgende ist ungetesteter Kesselplattencode, aber die Idee ist, dass Sie die Kernlöschfunktion von Joomla überschreiben und die Löschung manuell verarbeiten:

public function delete()
{
    // Get items to remove from the request and JTable object
    $cid = JFactory::getApplication()->input->get('cid', array(), 'array');

    // Load model, do not use delete method or you'll get same error
    $model = $this->getModel();

    // Load JTable class using model and pass in array of IDs to delete
    $table = $model->getTable();
    $table->delete($cid);
}

Hoffe das hilft.

2
Brian Bolli