خطاها در قالب
گاها لازم است خطاهایی که به وجود میآید در قالب نمایش داده شوند، برای نمایش و مدیریت این دسته از خطاها در فریمورک کلاس packages\base\view\Error
ایجاد شده است.
کد خطا
برای مدیریت خطاها حتما پیشنهاد میشود برای هر خطا یک کد مشخص تعیین کنید که بیانگر علت خطای دریافتی میباشد. از این کد میتوانید برای پیدا کردن مشکل و یا نمایش خطای مختص به آن استفاده کنید.
در زمان ایجاد شئ از کلاس Error میتوانید کد خطا را در اولین آرگومان آن مشخص کنید. همچنین میتوانید بعد از ایجاد شئ، از متد setCode
برای مشخص کردن کد خطا، استفاده نمایید.
از طریق فراخوانی متد getCode
میتوانید کد خطا مشخص شده را دریافت کنید.
<?php
namespace packages\packagename\controllers;
use themes\themename\views\packagenaem as views;
use packages\packagename\{hosts\Plan as HostModel, Order as OrderModel, Tld as TldModel};
use packages\base\{Controller, Response, View, Http, InputValidationException, view\Error};
class Orders extends Controller {
public function domain($data): Response {
$view = View::byName(views\domains\Order::class);
$this->response->setView($view);
if (Http::is_post()) {
$this->response->setStatus(false);
$inputs = $this->checkinputs(array(
'domain' => array(
"type" => "string",
),
'tld' => array(
'type' => array('number', 'string'),
),
'hostPlan' => array(
'type' => HostModel::class,
'optional' => true
)
));
if (!$inputs["tld"]) {
throw new InputValidationException("tld");
}
if (!$inputs["domain"]) {
throw new InputValidationException("domain");
}
if (is_number($inputs["tld"])) {
$inputs["tld"] = TldModel::byId($inputs["tld"]);
if (!$inputs["tld"]) {
throw new InputValidationException("tld");
}
$inputs["tld"] = $inputs["tld"]->code;
}
$isAvailable = OrderModel::checkDomainAvailability($inputs["domain"] . "." . $inputs["tld"]);
if (!$isAvailable) {
$error = new Error("domain_is_not_available");
// $error->setCode("domain_is_not_available");
$view->addError($error);
/**
* Or you can throw it. Jalno will be catch and add it to view errors automatically
*
* throw $error;
*/
}
$order = new Order();
$order->user_id = 1;// Current user id
$order->domain = $inputs["domain"] . "." . $inputs["tld"];
if (isset($inputs["hostPlan"])) {
$order->host_id = $inputs["hostPlan"]->id;
}
$order->status = OrderModel::NOT_CONFIGURED;
$order->save();
$this->response->setStatu(true);
} else {
$this->response->setStatu(true);
}
return $this->response;
}
}