J'ai écrit un tas de composants personnalisés et un seul d'entre eux a le problème suivant. Lorsque je clique sur une ligne individuelle dans la liste des administrateurs du composant pour la modifier, je reçois l'infâme:
"Erreur d'extraction a échoué avec l'erreur suivante:"
Maintenant, bien sûr, nous avons tous eu cette erreur dans Joomla, cependant, elle contient généralement plus d'informations, telles que, je ne sais pas, UNE ERREUR ??? J'ai augmenté le niveau d'erreur au maximum, recherché dans les journaux PHP, activé le système de débogage et il n'y a toujours rien à trouver. Notez que "l'erreur" ne fonctionne pas vraiment m'empêche de faire la modification, à l'exception du fait que lorsque je clique sur Enregistrer et fermer, les données sont enregistrées bien que le flux de pages ne revienne pas dans la liste des administrateurs. Je dois cliquer sur le bouton Annuler/Fermer pour revenir en arrière.
J'ai créé cela et d'autres composants de travail à l'aide de Component Creator. Je ne remplace aucune des méthodes de table et uniquement la méthode de sauvegarde du modèle.
Il convient également de noter que j’ai effectué un enregistrement global ainsi que j’ai parcouru la base de données à la recherche de valeurs extraites connexes, sans en trouver aucune. Je pense que le "Check-out" est un hareng rouge.
Toutes les idées sur la façon de déboguer ce problème sont les bienvenues.
Classe de table:
<?php
defined('_JEXEC') or die;
/** * clubofficer Table class */
class Curling_org_dataTableclubofficer extends JTable {
/**
* Constructor
*
* @param JDatabase A database connector object
*/
public function __construct(&$db) {
parent::__construct('#__curling_club_officers', 'id', $db);
}
}
Cordialement, Rob
Cette erreur s’affiche lorsque vous essayez d’éditer une ligne et de la laisser sans être archivée. Vérifiez votre contrôleur principal (c'est-à-dire la classe ComponentNameController dans votre controller.php), avec le code suivant:
if ($vName == 'form' && !$layout && ! $this->checkEditId('com_componentname.edit.itemname', $id))
{
// Somehow the person just went to the form - we don't allow that.
throw new Exception(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id), 403);
}
Vous voudrez peut-être ajouter un bouton d’archivage dans votre liste pour archiver rapidement ces lignes.
<?php if ($item->checked_out) : ?>
<?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'itemname.', $canCheckin); ?>
<?php endif; ?>
Et enfin, voici la configuration requise pour utiliser correctement les fonctionnalités de formulaire de Joomla.
Enfin, utilisez la méthode yourcontroller.save (paramètre "task" de votre action de formulaire ou un champ masqué) pour vérifier correctement la ligne. Si vous utilisez la méthode yourcontroller.apply, la ligne restera extraite jusqu'à ce que vous sauvegardiez.
par exemple
<button type="button" onclick="Joomla.submitbutton('controllername.save')">Save</button>
ou dans votre vue de formulaire d'administration, ajoutez le bouton de la barre d'outils pour enregistrer
JToolbarHelper::save('controllername.save');
pdate: Voici quelques cas possibles pour que cette erreur se produise:
Donc, je crois que le problème est avec votre classe de table.