web-dev-qa-db-fra.com

Bouton Backend Delete, analysez le tableau cid [] contenant l’id de la case cochée,

Dans la section admin d'un composant, j'ai ce formulaire:

enter image description here

Je viens d’ajouter les cases à cocher à gauche après ceci API Joomla .

MyCode:

$i=$rows_num;
$checked    = JHTML::_( 'grid.id', $i, $voter["vid"] );
echo $checked;

Et le bouton Supprimer montré dans l'image comme ça:

$bar->appendButton( 'Link', 'delete', 'Διαγραφή συγκεκριμένων ψήφων', 'index.php?option=com_exnetpolls&deleteit='.$isnotempty.'&gotcha=yo ');

Le composant n'est pas le mien et le créateur n'a pas utilisé de contrôleur (chaque action est exécutée dans un fichier exnetpolls.php). J'ai donc créé un nouveau fichier getitdeleted.php et ajouté dans exnetpolls.php:

exnetpolls.php (premier fichier à exécuter)

if($_GET['deleteit']!="" && $_GET['deleteit']!=NULL){ 
    include("getitdeleted.php");
}

Et dans getitdeleted.php

<?php
defined('_JEXEC') or die('Restricted access');
echo "test";
$cid = JRequest::getVar('cid',array(),'','array');
var_dump($cid);
if(isset($_GET['gotcha'])){
echo "worked".$_GET['deleteit'];
//code to delete from db
unset($_GET['gotcha']);
}

Je sais que la manière dont je suis en train d'utiliser est un peu relancée, mais cela fonctionne sauf que le:

$cid = JRequest::getVar('cid',array(),'','array');
var_dump($cid);

returns array(0) {}

Bien que je tape dans mon navigateur:

index.php?option=com_exnetpolls&deleteit=18&gotcha=yo&cid[]=2

the var_dump returns : array(1) { [0]=> string(1) "2" }

J'ai aussi remarqué que je pouvais en quelque sorte analyser la valeur avec jquery en utilisant l'identifiant d'entrée, mais j'aimerais le faire si c'était ma dernière option.

<input id="cb15" name="cid[]" value="2278" onclick="Joomla.isChecked(this.checked);" title="Πλαίσιο ελέγχου για τη σειρά 16" type="checkbox">

J'ai aussi essayé de passer le cid [] d'une manière ou d'une autre avec le bouton de suppression comme ceci:

$bar->appendButton( 'Link', 'delete', 'Διαγραφή συγκεκριμένων ψήφων', 'index.php?option=com_exnetpolls&deleteit='.$isnotempty.'&gotcha=yo&cid[] ');

Mais un spécialiste de Joomla pourrait-il m'éclairer s'il vous plaît sur ce que je fais mal ici?

EDIT: oublié de mentionner que je voudrais vérifier avant d’appuyer sur le bouton DELETE si cid[]==NULL Afin de pouvoir changer la valeur de $isnotempty. Quand je var_dump la $cid = JRequest::getVar('cid',array(),'','array'); dans le fichier que je crée l'entrée, je reçois à nouveau un tableau null.

1
IseNgaRt

Sur la base de nos commentaires, je suggérerais que votre bouton de suppression n'invoque que l'action GET. Cela signifie que tous les champs de saisie ne sont pas traités. Essayez d'utiliser normal <form> avec action="post" comme:

<form action="<?php echo JRoute::_('index.php?option=com_exnetpolls&deleteit='.$isnotempty.'&gotcha=yo'); ?>" method="post" name="adminForm" id="adminForm">
1
Dmitry Rekun