تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ sevda
کار نکردن validation
جامعه نود جی اس ایجاد شده در ۱۵ شهریور ۱۴۰۲

با سلام

من قسمت validator رو طبق گفته استاد نوشتم اما کار نمیکنه

exports.store = async (req, res) => {
  const postData = {
    title: req.body.title,
    author_id: req.body.author,
    slug: req.body.slug,
    content: req.body.content,
    status: req.body.status,
  };
  const errors = postValidator.create(postData);
  console.log(errors.length)
  if (errors.length > 0) {
    req.flash("errors", errors);
    return res.redirect("/admin/posts/create");
  }
  const insertID = await postModel.create(postData);
  if (insertID) {
    req.flash('success', 'مطلب جدید با موفقیت ایجاد شد');
    res.redirect("/admin/posts");
  }
  console.log(4,errors)
}

سلام،

کدام قسمتش بدرستی کار نمیکند؟ نیاز است در مورد اون قسمت جزئیات بیشتری رو مشخص کنید.

محسن موحد ۱۵ شهریور ۱۴۰۲، ۲۰:۴۹

errors برای من خالی میاید و hasError false همیشه:

این view من هست:

<div class="row mbn-30">

   

    <div class="col-md-12 mb-30">

      <div class="box">

        <div class="box-head">

          <div class="row">

            <h4 class="title">اطلاعات مطلبh4>

          div>

        <div class="box-body">

          {{hasError}}

          <form action="/admin/posts/store" method="POST"  enctype="multipart/form-data">

            {{#if hasError}}

              <div class="alert alert-outline-secondary" role="alert">

                {{#each errors}}


                <p>{{this}}p>

                {{/each}}

              div>

            {{/if}}

         

            <div class="row mbn-20">

              <div class="col-12 mb-20">

                <input type="text" name="title" id="formLayoutUsername3" class="form-control"

                  placeholder="عنوان مطلب" />

              div>



              <div class="col-12 mb-20">

                <input type="text" name="slug" id="formLayoutEmail3" class="form-control" placeholder="نامک مطلب" />

              div>


              <div class="col-12 mb-20">

                <textarea id="formLayoutMessage1" name="content" class="form-control"

                  placeholder="محتوای مطلب">textarea>

              div>

              <div class="col-12 mb-15">

                <select name="author_id" class="form-control">

                  {{#each users}}

                  <option value="{{this.id}}">{{this.full_name}}option>

                  {{/each}}


                select>

              div>

              <div class="col-12 mb-20">

                <h6 class="mb-15">وضعیت مطلبh6>

                <div class="form-group">

                  <label class="inline"><input name="status" value="0" type="radio" />پیش نویسlabel>

                  <label class="inline"><input name="status" value="1" type="radio" />در حال بازبینیlabel>

                  <label class="inline"><input name="status" value="2" type="radio" />منتشرشدهlabel>

                div>

              div>

قسمت بالا که فرستادم کنترلر post f,n

اینم middleware هست:

module.exports = app => {

    app.use((req, res, next) => {

        const errors = req.flash('errors');

        const success = req.flash('success');

        const hasError = errors.length > 0;


        res.adminRender = (template, options) => {

            console.log(errors.length, hasError)

            options = { ...options, layout: 'admin', hasError, errors, success }

            res.render(template, options);

        };

        next();

    });

}

اینم validator هست:

exports.create = (req) => {

    const errors = [];

    if (req.title === "") {

        hasError = true;

        errors.push('عنوان نمیتواند خالی باشد.');

    }

    if (req.slug === "") {

        hasError = true;

        errors.push('نامک نمیتواند خالی باشد.');

    }


    if (req.content === "") {

        hasError = true;

        errors.push('محتوا نمیتواند خالی باشد.');

    }

    return errors;

}

و validatror رو توی کنترلر postrequire کردم

middlewares رو هم توی روت پروژه index.js اضافه کرم اما console.log میکنم errors خالی میاد توی middleware

sevda ۱۶ شهریور ۱۴۰۲، ۰۵:۰۷

پروژتون رو روی گیتهاب بذارید یا اینجا پیوست کنید تا بررسی کنم.

محسن موحد ۱۶ شهریور ۱۴۰۲، ۲۲:۲۴