با سلام خدمت دوستان عزیزم من 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>
توی فایل ProfileHandler.php به جای get از show استفاده کردید.
سلام خدمت شما. پیشنهاد میکنم حتما با استفاده از inspect element در گوگل کروم محل دقیق نمایش پیام ها رو بررسی کنید و دوباره با کد خودتون مطابقت بدید.
سلام ممنون از پاسخ شما ، inspect گرفتم ولی کد اون تیکه کد php کلا خارج از تگ html اجرا میشه
view page source رو هم پیوست براتون میفرستم .
فایل های js رو هم آدرس هاشو چک کردم درست هستن .
بازم بررسی کنید شاید کلاس FlashMessage داره اشتباهی دوبار فرخوانی میشه.
فایل 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 ;
}
}
جای دیگه ای به کار گرفته نشده و پیغام درست نشون داده میشه فقط جای درستی قرار نمیگیره
به جای این قسمت
$message = FlashMessage::show();
باید این میشد
$message = FlashMessage::get();