কাস্টম 404
যদি আপনি 404 এর বিষয়বস্তু ডায়নামিকভাবে নিয়ন্ত্রণ করতে চান, যেমন AJAX অনুরোধে JSON ডেটা ফেরত দেওয়া {"code:"404", "msg":"404 not found"}
এবং পেজের অনুরোধে app/view/404.html
টেমপ্লেট ফেরত দেওয়া, তাহলে নিচের উদাহরণটি দেখুন।
নিচে PHP নেটিভ টেমপ্লেটের উদাহরণ দেওয়া হয়েছে, অন্যান্য টেমপ্লেট
twig
blade
think-template
একই নীতিতে عمل করে।
ফাইল তৈরি করুন app/view/404.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>404 not found</title>
</head>
<body>
<?=htmlspecialchars($error)?>
</body>
</html>
config/route.php
তে নিচের কোড যুক্ত করুন:
use support\Request;
use Webman\Route;
Route::fallback(function(Request $request){
// ajax অনুরোধে JSON ফেরত দিন
if ($request->expectsJson()) {
return json(['code' => 404, 'msg' => '404 not found']);
}
// পেজের অনুরোধে 404.html টেমপ্লেট ফেরত দিন
return view('404', ['error' => 'some error'])->withStatus(404);
});
কাস্টম 405
webman-framework 1.5.23 থেকে, কলব্যাক ফাংশনে status প্যারামিটার প্রেরণের সমর্থন রয়েছে, যদি status 404 হয় তবে তা নির্দেশ করে যে অনুরোধটি বিদ্যমান নয়, 405 নির্দেশ করে যে বর্তমান অনুরোধ পদ্ধতি সমর্থিত নয় (যেমন Route::post() দ্বারা সেট করা রুটটি GET পদ্ধতিতে এক্সেস করা হচ্ছে)।
use support\Request;
use Webman\Route;
Route::fallback(function(Request $request, $status) {
$map = [
404 => '404 not found',
405 => '405 method not allowed',
];
return response($map[$status], $status);
});
কাস্টম 500
নতুন app/view/500.html
তৈরি করুন
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>500 Internal Server Error</title>
</head>
<body>
কাস্টম ত্রুটি টেমপ্লেট:
<?=htmlspecialchars($exception)?>
</body>
</html>
নতুন app/exception/Handler.php
তৈরি করুন (যদি ডিরেক্টরি না থাকে তাহলে নিজে তৈরি করুন)
<?php
namespace app\exception;
use Throwable;
use Webman\Http\Request;
use Webman\Http\Response;
class Handler extends \support\exception\Handler
{
/**
* রেন্ডার রিটার্ন
* @param Request $request
* @param Throwable $exception
* @return Response
*/
public function render(Request $request, Throwable $exception) : Response
{
$code = $exception->getCode();
// ajax অনুরোধে JSON ডেটা ফেরত দিন
if ($request->expectsJson()) {
return json(['code' => $code ? $code : 500, 'msg' => $exception->getMessage()]);
}
// পেজের অনুরোধে 500.html টেমপ্লেট ফেরত দিন
return view('500', ['exception' => $exception], '')->withStatus(500);
}
}
কনফিগারেশন config/exception.php
return [
'' => \app\exception\Handler::class,
];