جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
Davood
5 سال پیش توسط Davood مطرح شد
2 پاسخ

mvc validation

سلام دوره oop راکت رو که دیدم یه بخشش برا ولیدیشن بود یه کلاس نوشتیم برای validation

class validation
{
    private $error;
    private $data;

    public function make(Array $data, Array $rules)
    {
        $valid = true;
        $this->data = $data;

        foreach ($rules as $item => $rulest) {
            $rulest = explode("|", $rulest);

            foreach ($rulest as $rule) {
                $pos = strpos($rule, ":");

                if ($pos !== false) {
                    $parameter = substr($rule, $pos + 1);
                    $rule = substr($rule, 0, $pos);
                } else {
                    $parameter = "";
                }

                $methodName = ucfirst($rule);
                $value = isset($data[$item]) ? $data[$item] : null;

                if (method_exists($this, $methodName)) {
                    if ($this->{$methodName}($item, $value, $parameter) == false) {
                        $valid = false;
                        break;
                    }
                }
            }
        }

        return $valid;
    }

    public function getErrors()
    {
        return $this->error;
    }

    private function required($item, $value)
    {
        if (strlen($value) == "") {
            $this->error[$item][] = " پر کردن فیلد " . $item . " الزامیست ";
            return false;
        }
        return true;
    }

    private function email($item, $value)
    {
        if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
            $this->error[$item][] = "فرمت ایمیل وارد شده صحیح نیست";
        }
        return true;
    }

    private function min($item, $value, $param)
    {
        if (strlen($value) < $param) {
            $this->error[$item][] = " طول فیلد " . $item . " نباید کمتر از " . $param . " کاراکتر باشد ";
        }
        return true;
    }

    private function max($item, $value, $param)
    {
        if (strlen($value) > $param) {
            $this->error[$item][] = " طول فیلد " . $item . " نباید بیشتر از " . $param . " کاراکتر باشد ";
        }
        return true;
    }

    private function confirm($item, $value, $param)
    {
        echo $orginal = isset($this->data[$item]) ? $this->data[$item] : null;
        echo $confirm = isset($this->data[$param]) ? $this->data[$param] : null;

        if ($orginal != $confirm) {
            $this->error[$item][] = " فیلد " . $item . " با فیلد " . $param . " برابر نیست ";
            return false;
        }
        return true;
    }
}

حالا من دارم ازش استفاده میکنم به صورت زیر

  public function insert()
    {
        $cat = $this->News->SelectAllNews();
        if ($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['send'])) {

            $rules = [
                'name' => 'required',
                'email' => 'required|email|unique:users',
                'password' => 'required|min:6|max:20',
                'confirm_password' => 'required|confirm:password',
            ];

            $img = $_FILES['img'];
            $validation = new validation();
            $valid = $validation->make($_POST, $rules);

            if (!$valid) {
                $err = $validation->getErrors();
            }

            $img = self::uploadFile($img, "news");
            $this->News->addNews($_POST, $img);
            header("location:insert");
        }
        return View::renderTemplate('admin.news.insert', ["cat" => $cat]);
    }

قبلش use کردم کلاسو

حالا اون متغییر $err رو چطوری میتونم بفرستم به view پنل ادمینم که پیغام های خطا رو نمایش بده اگه بود ؟؟؟؟

@hesammousavi


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

سلام از طریق همون renderTemplate که نوشتید در پایین.


Davood
تخصص : PHP - Laravel
@dfardabasi 5 سال پیش آپدیت شد
0

اون $err رو خارج از if که میارم بیرون میبیرم تو همون renderTemplate که میذارم رنگ متغیر تغییر میکنه روش که موس رو میبرم
پیام میده

variable err might have not been defined

منظورش چیه؟؟؟؟

@hesammousavi
@Alimotreb
@ali.bayat


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام