قرار گرفتن falsh message در بالای panel

پرسیده شده
فعالیت 1107 روز پیش
دیده شده 626 بار
0

با سلام خدمت دوستان عزیزم من flash message رو طبق آموزش پیش بردم و کار میکنه ولی flash message در بالای panel قرار میگیره در حالی که در فایل index.php  کد php رو سر جای صحیح قرار دادم . کسی میتونه راهنمایی کنه

 

<div class="col-lg-12">
    <div class="card">
        <div class="card-title">
            <h4>حساب کاربری</h4>
        </div>
        <div class="card-body">
            <div class="row">
                <div class="col-md-12">
                    <div class="basic-form p-10">
                        <?php echo $message; ?>
                        <form action="" method="post">
                            <div class="form-group">
                                <label for="userFullName">نام و نام خانوادگی</label>
                                <input id="userFullName" name="userFullName" type="text"
                                        class="form-control input-default hasPersianPlaceHolder" 
                                        value="<?php echo $current_user->display_name; ?>"
                                >
                            </div>
                            <div class="form-group">
                                <label for="userEmail">آدرس ایمیل</label>
                                <input id="userEmail" name="userEmail" type="text"
                                        class="form-control input-default" disabled autocomplete="off"
                                        value="<?php echo $current_user->user_email; ?>">
                            </div>
                            <div class="form-group">
                                <label for="userPassword">کلمه عبور</label>
                                <input id="userPassword" name="userPassword" type="password"
                                        class="form-control input-default">
                            </div>
                            <div class="form-group m-t-20">
                                <button type="submit" name="saveData" class="btn btn-primary m-b-10 m-l-5">ثبت اطلاعات
                                </button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
فایل پیوست

Ebrahim Radan
Ebrahim Radan

2 اردیبهشت 00

0
حذف شده

توی فایل ProfileHandler.php به جای get از show استفاده کردید.

فایل پیوست

کیوان علی محمدی

توسط

کیوان علی محمدی

4 اردیبهشت 00

0
حذف شده

سلام خدمت شما. پیشنهاد میکنم حتما با استفاده از inspect element در گوگل کروم محل دقیق نمایش پیام ها رو بررسی کنید و دوباره با کد خودتون مطابقت بدید.

فایل پیوست

کیوان علی محمدی

توسط

کیوان علی محمدی

3 اردیبهشت 00

حذف شده
چک کردم ولی نشد از view page source یه اسکرین واستون میفرستم
Ebrahim Radan

3 اردیبهشت 00

0
حذف شده

سلام ممنون از پاسخ شما ، inspect گرفتم ولی کد اون تیکه کد php کلا خارج از تگ html اجرا میشه  

view page source رو هم پیوست براتون میفرستم . 

فایل های js رو هم آدرس هاشو چک کردم درست هستن . 

فایل پیوست

Ebrahim Radan

توسط

Ebrahim Radan

3 اردیبهشت 00

0
حذف شده

بازم بررسی کنید شاید کلاس FlashMessage داره اشتباهی دوبار فرخوانی میشه.

فایل پیوست

کیوان علی محمدی

توسط

کیوان علی محمدی

3 اردیبهشت 00

حذف شده
ممنون از راهنمایی ولی فکر نکنم جای دیگه ای استفاده شده باشه حالا ممنون میشم یه نگاهی به کدها بندازین
Ebrahim Radan

3 اردیبهشت 00

0
حذف شده

فایل ProfileHandler.php

<?php
include "Handler.php";
include UPP_DIR . "panel/flash.class.php";
include UPP_DIR . '/view.class.php';


class ProfileHandler extends Handler
{

    public function __construct()
    {
      parent::__construct();
      add_action('upp_update_profile' , [$this,'update_user_profile']);
    }
   
    public function index()
    {

      if(isset($_POST['saveData']))
      {
          do_action( 'upp_update_profile');
      }

      $message = FlashMessage::show();
      $params = [
        'current_user' => $this->current_user,
        'message' => $message
      ];
      View::load('panel.profile.index' , $params);


    }

    public function update_user_profile()
    {
        $user_data_for_update = [
          'ID' => $this->current_user->ID,
          'display_name' => apply_filters( 'pre_user_display_name', $_POST['userFullName'])
        ];
        if(!empty($_POST['userPassword'])){
          $user_data_for_update['user_pass'] = apply_filters( 'pre_user_pass', $_POST['userPassword'] );
        }

        $update_result = wp_update_user($user_data_for_update);
        if(!is_wp_error($update_result)){

          FlashMessage::add('اطلاعات کاربری با موفقیت به روز رسانی شد');
        }
    }
}

 

 

فایل flash.class.php

<?php

class FlashMessage
{

    const SUCCESS = 1;
    const ERROR = 2;

    public static function add($message, $type = self::SUCCESS)
    {
    
        $_SESSION['upp_messages'] = [
        'message' => $message,
        'type' => $type
        ];


    }
    
    public static function show()
    {
        if (isset($_SESSION['upp_messages'])) {
            $message = $_SESSION['upp_messages'];
            if($message['type'] == self::SUCCESS){
                echo '<div class="alert alert-success"><p>' . $message['message'] . '</p></div>' ; 

            }else{
                echo '<div class="alert alert-danger"><p>' . $message['message'] . '</p></div>';

            }
            self::clear();
        }

    }

    public static function get()
    {
        $message_in_html ='';

        if (isset($_SESSION['upp_messages'])) {
            $message = $_SESSION['upp_messages'];
            if($message['type'] == self::SUCCESS){
                $message_in_html =  '<div class="alert alert-success"><p>'.$message['message'].'</p></div>' ; 
            }else{
                $message_in_html =  '<div class="alert alert-danger"><p>' . $message['message'] . '</p></div>';

            }
            self::clear();
        }

        return $message_in_html;

    }

    public static function clear()
    {
        $_SESSION['upp_messages'] = null ; 
    }

}

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

 

فایل پیوست

Ebrahim Radan

توسط

Ebrahim Radan

3 اردیبهشت 00

0
حذف شده

به جای این قسمت 

      $message = FlashMessage::show();

 

باید این میشد

      $message = FlashMessage::get();
فایل پیوست

Ebrahim Radan

توسط

Ebrahim Radan

3 اردیبهشت 00