Yii Framework Forum: اضافه کردن خطای دلخواه - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

اضافه کردن خطای دلخواه error hanler

#1 User is offline   Shahcheraghean 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 12-December 12
  • Location:Mashhad, IRAN

  Posted 18 November 2013 - 02:47 AM


با سلام.
همه دوستان با صفحه خطای فریمورک آشنایی دارند.
Posted Image
سوالم اینه که چطور می تونم اطلاعات مربوط به خطایی را به طور دلخواه به این صفحه اضافه کنم؟

www.shgn.ir
www.shgn.ir/yii-framework/
yii2.swsco.ir
In a world without any fences or walls,Who needs Gates or Windows!
0

#2 User is offline   R.C 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 26-November 13
  • Location:Iran

Posted 29 November 2013 - 09:02 AM

منظور شما خطایی که پارسر میگیره هست یا خطاهایی که مربوط به سایت و کاربران هست؟
0

#3 User is offline   Shahcheraghean 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 12-December 12
  • Location:Mashhad, IRAN

Posted 29 November 2013 - 10:22 AM

خودم می خوام خطار را تولید کنم و اون پارامترهایی را که لازم دارم و مقادیرشان را موقع خطا ببینم. اصطلاحا بهش میگن watch

www.shgn.ir
www.shgn.ir/yii-framework/
yii2.swsco.ir
In a world without any fences or walls,Who needs Gates or Windows!
0

#4 User is offline   MLF 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 59
  • Joined: 21-October 13
  • Location:Iran

Posted 11 December 2013 - 02:57 AM

یه نگاهی به فایل yii/framework/views/exception.php بندازین و بحث ErrorReporting رو در Yii بررسی کنید، روش کار دستتون میاد. بخصوص بحث مدیریت CException (خطاهای نوع CHttpException ویوهای جداگانه دارن).

0

#5 User is offline   Nabi 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 210
  • Joined: 22-February 12
  • Location:Ahwaz

Posted 11 December 2013 - 06:42 PM

سلام،

قبل از هر چیز مطمئن بشو این دو دستور در index.php حذف و یا کامنت شدند.


defined('YII_DEBUG') or define('YII_DEBUG',true);
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);


سپس در فایل config/main.php این بخش رو موقتاً کامنت کن:


'errorHandler'=>array(
	'errorAction'=>'site/error',
),


حالا در شاخه view ، یک شاخه جدید با نام system بساز.
سپس یک فایل با نام error500.php درون اون ایجاد کن و پیغام مورد نظری که دوست داری نمایش داده بشه رو در اون بنویس.

توجه کن این فقط برای سفارشی سازی خطاهای 500 هست (یعنی مثل همین خطایی که شما عکسش رو قرار دادید) و برای خطاهای دیگه باید فایل مربوطه رو ایجاد کنید. مثلاً فایهای error404.php , error400.php , error400.php , error503.php و در هر یک پیغام خطای مناسب رو باید بنویسی.
اما کار ساده تری هم میشه کرد و اون اینکه همه این فایلها رو متمرکز کرد. یعنی بجای این همه فایل، تنها یک فایل error.php بسازی و در صورتی که هر خطای نوع Exception ظاهر شد، این فایل صدا زده میشه. در چنین حالتی نیاز داری که بر اساس کد خطا، پیغام مناسب رو نمایش بدی که به طور کلی در این فایلها شما به این متغییر ها دسترسی دارید:


$data['code']
$data['message']
$data['admin']
$data['time']
$data['version']


و شاید هم بیشتر...

الان احتمالاً وقتی تست کنی با یک مسئله رو برو میشی و اون اینکه مشاهده میکنی که سایت در layout و قالب سایت نمایش داده نمیشه.

برای حل این مشکل شما بایستی این کارو بکنید:

اول از همه این بخش رو که گفتم موقتاً کامنت کن رو از کامنت خارج کن:


'errorHandler'=>array(
	'errorAction'=>'site/error',
),


حالا همه خطا ها به اکشن site/error هدایت میشن.

اکشن error رو ایجاد کن و یک همچین کدی رو درون اون بنویس:


	public function actionError()
	{
		if($error=Yii::app()->errorHandler->error)
		{
			if(Yii::app()->request->isAjaxRequest)
				echo $error['message'];
			else
    			$this->render('error', $error);
		}
	}


سپس view مربوطه error رو ایجاد کن و با استفاده از متغییر های:


$code
$type
$errorCode
$message
$line


خطاهای مورد نظرت رو شکل بده.

اگر توی همین view یه var_dump($error)‎ بزنی، متغییر های هیجان انگیزتری رو خواهی یافت ;)

بدین صورت پیغام ها در چهار چوب قالب شما لود خواهند شد.

تموم شد!
موفق باشی.
نبی



وقتی پیغام میذارید، بی زحمت متنتون رو انتخاب کنید و این دو تا کار ناقابل رو هم انجام بدید:
1. از اون بالا RTL رو انتخاب کنید.
2. فونت رو هم Tahoma بگذارید.
که چشمون در نیاد.
دمت گرم!

www.IranPHP.ir
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users