11
votes

YII Comment gérer la page d'erreur personnalisée 404 avec d'autres pages d'erreur

Je veux afficher 404 page d'erreur pour que j'ai fabriqué un fichier ERROR404.PHP dans mon dossier protégé / affichage / système.

Par défaut, j'ai SITECONTROLLER et contenait une fonction d'action d'erreur comme ci-dessous P>

        throw new CHttpException(404, 'Page not found');


0 commentaires

4 Réponses :


3
votes

Chaque fois que des erreurs se produisent, l'erreur d'action dans SiteController est appelée. Vous pouvez personnaliser l'itinéraire d'erreur dans cette action, vous pouvez faire quelque chose comme ceci:

if(404==Yii::app()->errorHandler->error->code){
     //go to custome error page
else
   //code default error.php


3 commentaires

Vous voulez dire que, si, autre condition de la vue Erreur, puis ajoutez des vues partielles en conséquence? (Je pensais que cela devrait être un automatique si j'utilise ERROR404.PHP dans le répertoire système. ???


Oui..Je ne suis pas sûr qu'il fonctionne avec automatique ... Voir les mises à jour.


Dans le tutoriel et la mise à jour du document, il n'a pas beaucoup d'informations à ce sujet. J'ai besoin de gérer les erreurs par défaut ainsi que de ma propre erreur de personnalisation des pages personnalisées 404 ou 405. Pour cela, j'ai ajouté ERRORT404.PHP dans mon Dir System et pour gérer les erreurs par défaut, j'utilise le fichier de configuration dans le nouveau contrôleur SystemController. Mais quelque peu parce que je ne travaille pas comme je veux



1
votes

Tu ne peux pas faire ça avec .htaccess? Personnellement, je crée un dossier "Erreurs" avec tous les fichiers PHP HTML qui détient les messages d'erreur et modifier .htaccess pour appeler ces pages tout en venant de l'erreur.

liens : < p> http://www.javascriptkit.com/howto/htaccess2.shtml

http://www.addedbytes.com/for -Beginners / Error-Documents-for-Débutants /

Exemples :

Créer un fichier .htaccess dans le répertoire souhaité Les pages à appeler et dans le fichier texte, écrivez la ligne suivante: xxx

supposant qu'il y a une page appelée 404.html dans le même répertoire, quand une page 404 non trouvée Erreur est gagnée, la page 404.html sera appelée.

Les mêmes œuvres avec d'autres codes d'erreur: xxx

supposant qu'une erreur 500 a été créée et Un fichier 500Error.html existe dans le même répertoire.


1 commentaires

Je sais que de faire cela en utilisant Htaccess, mais j'apprends Yii et mon système requis pour que je dois l'utiliser via Yii. Bienveillez-vous si vous avez une idée de la façon de faire cela en utilisant Yii car même son tutoriel est très vague et ne donne pas du tout plus large. Aidez-moi les gars ...



9
votes

Utilisez ce code pour activeError em>: xxx pré>

in vues / site Créez error404.php em> pour 404 erreurs et erreur .php em> pour le reste. p>

ou vous pouvez définir des paramètres dans la configuration pour les erreurs que vous souhaitez gérer différemment et vérifier le code d'erreur par rapport à celui-ci: P>

$app = Yii::app();
if( $error = $app->errorHandler->error->code )
{
    if( Yii::app()->request->isAjaxRequest )
        echo $error['message'];
    else    
        $this->render( 'error' . ( in_array( $error, $app->params[ 'customErrorPages' ] ) ? $error : '' ), $error );
}


3 commentaires

Je devais le changer à ce si ($ error = yii :: app (app () -> ErrorHandler-> Error ['Code']) ERROR-> CODE Donnait moi des erreurs. Aussi getvieviefile me donne cette erreur. CWEBApplication et ses comportements ne possèdent pas de méthode ni de fermeture nommée "geviewfile". (/ Applications / XAMPP / XAMPPFILES / HTDOCS / WM / Common / LIB / YII / FRA MEWORK / BASE / CCOMPONE NT.PHP: 266) Toutes les idées?


Le message d'erreur pour ERROR-> CODE est Avis: essayer d'obtenir une propriété de non-objet dans / Applications / XAMPP / XAMPFFILES / HTDOCS / WM / Backers / Contrôleurs /SITECONTROLLER.PHP ON ligne 48 @boris


Vous avez raison. Il n'y a pas de méthode geveviewfile dans la classe d'applications. Devrait appeler la méthode du contrôleur: $ this-> gevieviefile (...)



1
votes

Dans les dernières versions du framework (je travaille avec 1.14) utilisez: xxx

car erreur est un tableau. >


0 commentaires