web-dev-qa-db-fra.com

Afficher le message Impossible de supprimer l'élément: clé étrangère

J'utilise le mappage de clé étrangère dans mon composant. Maintenant, je veux ajouter un message d'erreur "Impossible de supprimer l'élément" chaque fois que l'utilisateur tente de supprimer l'élément parent.

Tout comme nous le voyons dans le gestionnaire de catégories "L'option Supprimer n'est pas autorisée pour la catégorie étrangère. Un élément de catégorie 1 est affecté à cette catégorie".

Amicalement, Ruchika

2
user5491

Vous devez mettre en œuvre le contrôle similaire à celui effectué pour les catégories dans plug-in de contenu CMS .

...
...
...

// See if this category has any content items
$table = '#__table_name';
$count = $this->countItemsInCategory($table, $data->get('id'));

// Show error if items are found in the category
if ($count > 0)
{
    $msg = JText::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->get('title')) .
        JText::plural('COM_CATEGORIES_N_ITEMS_ASSIGNED', $count);

    $app->enqueueMessage($msg, 'warning');

    $result = false;
}

...
...
...

/**
 * Get count of items in a category
 *
 * @param   string   $table  The table name of component table (column is catid)
 * @param   integer  $catId  The id of the category to check
 *
 * @return  integer  Count of items found
 *
 * @since   1.0
 */
private function countItemsInCategory($table, $catId)
{
    $db = JFactory::getDbo();

    // Count the items in this category
    $query = $db->getQuery(true)
        ->select('COUNT(id)')
        ->from($table)
        ->where('catid = ' . (int) $catId);

    $db->setQuery($query);

    return (int) $db->loadResult();
}
2
Dmitry Rekun