Tutoriel : créer des champs extras depuis un plugin - commentairesTutoriel : créer des champs extras depuis un plugin2023-11-11T16:51:13Zhttps://files.spip.net/Tutoriel-creer-des-champs-extras-depuis-un-plugin#comment5143922023-11-11T16:51:13Z<p>Rho... nom d'un spip :-) C'est bien de faire des pauses des fois...</p>
<p>Oui<small class="fine d-inline"> </small>;, c'était ça bien sûr et c'est pourtant bien écrit dans la doc d'<a href="https://programmer.spip.net/include_spip" class="spip_out" rel='nofollow external'>include_spip</a>.</p>
<p>Merci et encore désolé pour le dérangement...</p>Tutoriel : créer des champs extras depuis un plugin2023-11-10T11:27:20Zhttps://files.spip.net/Tutoriel-creer-des-champs-extras-depuis-un-plugin#comment5143852023-11-10T11:27:20Z<p>Parce que c'est <code class="spip_code spip_code_inline" dir="ltr">include_spip('base/prefixe');</code> qu'il faudrait avoir<small class="fine d-inline"> </small>? sans le .php</p>Tutoriel : créer des champs extras depuis un plugin2023-11-10T10:46:02Zhttps://files.spip.net/Tutoriel-creer-des-champs-extras-depuis-un-plugin#comment5143842023-11-10T10:46:02Z<p>Merci, effectivement, j'ai :</p>
<div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>PHP Fatal error:
Uncaught Error: Call to undefined function prefixe_declarer_champs_extras() in /var/www/mon_site_spip/plugins/prefixe/prefixe_administrations.php:40
Stack trace:
#0 /var/www/mon_site_spip/ecrire/plugins/installer.php(171): eg_prix_upgrade()
.#1 /var/www/mon_site_spip/ecrire/plugins/installer.php(125): spip_plugin_install()
#2 /var/www/mon_site_spip/plugins-dist/svp/inc/svp_actionner.php(1503): plugins_installer_dist()
#3 /var/www/mon_site_spip/plugins-dist/svp/inc/svp_actionner.php(1365): Actionneur->installer_plugin()
#4 /var/www/mon_site_spip/plugins-dist/svp/inc/svp_actionner.php(987): Actionneur->do_install()
#5 /var/www/mon_site_spip/plugins-dist/svp/inc/svp_actionner.php(950): Actionneur->do_action()
#6 /var/www/mon_site_spip/plugins-dist/svp/action/actionner.php(35): Actionneur->one_action()
#7 /var/www/mon_site_spip/ecrire/public/aiguiller.php(80): action_actionner_dist()
#8 /var/www/mon_site_spip/ecrire/index.php(64): traiter_appels_actions()
#9 {main} thrown in /var/www/mon_site_spip/plugins/prefixe/prefixe_administrations.php on line 40, referer: https://mon_site_spip/ecrire/?exec=admin_plugin&action=actionner&redirect=mon_site_spip%2Fecrire%2F%3Fexec%3Dadmin_plugin</code></pre></div>
<p>J'ai pourtant bien mon</p>
<div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>include_spip('base/prefixe.php');</code></pre></div> <p>en début de fichier prefixe_administrations.php (et d'ailleurs les mises à jour du plugin ne plantent pas, donc cette inclusion semble bien prise en compte à ce moment).</p>
<p>On dirait justement que l'include n'est pas pris en compte à l'installation et à la désinstallation du plugin. Mais pourquoi<small class="fine d-inline"> </small>?? Même en le plaçant à l'intérieur des fonctions ça plante...</p>Tutoriel : créer des champs extras depuis un plugin2023-11-09T13:17:24Zhttps://files.spip.net/Tutoriel-creer-des-champs-extras-depuis-un-plugin#comment5143702023-11-09T13:17:24Z<p>Erreur 500 -> PHP qui foire. Il faudrait que tu consulte les logs PHP pour en savoir plus.</p>Tutoriel : créer des champs extras depuis un plugin2023-11-09T12:51:04Zhttps://files.spip.net/Tutoriel-creer-des-champs-extras-depuis-un-plugin#comment5143692023-11-09T12:51:04Z<p>Ça plante sur une erreur 500 lorsque j'installe ou desinstalle le plugin.</p>
<p>Et quand ça marche c'est comme il se doit : champs extras créés ou supprimés conformément aux lignes de commande cextras_api_upgrade(prefixe_declarer_champs_extras(), $maj['create']) ou cextras_api_vider_tables(prefixe_declarer_champs_extras()).</p>
<p>Et comme je l'écrivais, quand on fait un refresh quelques secondes plus tard sur une erreur 500 à la désinstallation, celle-ci disparaît et le plugins est correctement desinstallé.</p>
<p>En résumé, le pipeline prefixe_declarer_champs_extras() ne semble pas fonctionner à tous les coups.</p>Tutoriel : créer des champs extras depuis un plugin2023-11-09T11:49:04Zhttps://files.spip.net/Tutoriel-creer-des-champs-extras-depuis-un-plugin#comment5143662023-11-09T11:49:04Z<p>« Ca plante » «<small class="fine d-inline"> </small>ca marche<small class="fine d-inline"> </small>» faudrait préciser le « comment ca plante » et « comment ca marche ».</p>Tutoriel : créer des champs extras depuis un plugin2023-11-09T11:47:09Zhttps://files.spip.net/Tutoriel-creer-des-champs-extras-depuis-un-plugin#comment5143652023-11-09T11:47:09Z<p>Bonjour,</p>
<p>SPIP 4.2.6 / Champs Extras 4.1.2</p>
<p>Quand j'installe un plugin ($maj['create']) ou que je le désinstalle, j'ai une formidable erreur 500 avec cextras_api_upgrade(prefixe_declarer_champs_extras(), $maj['create']), de même qu'avec cextras_api_vider_tables(prefixe_declarer_champs_extras()).</p>
<p>Si je met directement un tableau $champs_extras au lieu de prefixe_declarer_champs_extras(), ça fonctionne.</p>
<p>De même que les mises à jour cextras_api_upgrade(prefixe_declarer_champs_extras(), $maj['x.y.z']) fonctionnent également.</p>
<p>Enfin, lors d'une désinstallation du plugin, ça plante, mais un petit refresh au bout d'une dizaine de seconde... et ça marche<small class="fine d-inline"> </small>!</p>
<p>On dirait qu'à priori, le pipeline prefixe_declarer_champs_extras fait planter tout ça uniquement à l'installation et à la désinstallation.</p>
<p>Est-ce que c'est moi ou bien quelqu'un a déjà rencontré le même problème<small class="fine d-inline"> </small>? Je peux le contourner come expliqué (déclarer directement mes champs extras dans prefixe_upgrade() bien sûr, mais ce n'est pas très... moral<small class="fine d-inline"> </small>? :-)</p>
<p>Merci pour vos lumières.</p>