Je travaille sur un composant personnalisé qui affiche les pages à l'utilisateur sur le front-end. Il est possible qu'un utilisateur tente d'accéder à une page du composant qui n'existe plus et, dans ce cas, j'aimerais afficher la page 404 déjà configurée. Comment faites-vous Joomla! afficher la page 404 à partir d'un composant personnalisé? Juste comme avec une erreur 404 normale, je cherche la barre d'adresse pour ne pas changer. Pouvoir faire cela à partir du modèle serait préférable.
Merci de votre aide.
La version récente de Joomla peut gérer les erreurs en fonction des exceptions natives PHP, il suffit donc de lancer une exception avec le message et la valeur correspondants, Joomla affichera le jeu de pages d'erreur (modèle, personnalisé…)
if ($someCheck)
{
throw new Exception(JText::_('JERROR_LAYOUT_PAGE_NOT_FOUND'), 404);
}
Source: Quelle est la bonne manière de gérer les exceptions?
Dans votre répertoire d'installation Joomla, accédez au fichier templates/themeXXX/error.php.
Modifiez le fichier error.php comme indiqué ci-dessous, localisez cette ligne de code: Si vous ne souhaitez pas modifier l'URL de la barre d'adresse, vous pouvez utiliser le code ci-dessous.
if (($this->error->getCode()) == '404') {
header("HTTP/1.0 404 Not Found");
echo file_get_contents(JURI::root().'alias-of-404-article-page');
exit;
}
Pour appeler la page d'erreur 404 à partir de votre composant, il suffit de générer une erreur 404 à l'aide de JError. Par exemple:
JError::raiseError(404, JText::_('COM_CONTENT_ERROR_ARTICLE_NOT_FOUND'));