تالار گفتمان nCIS.ir

نسخه‌ی کامل: عدم نمایش پیام Flash بعد از درخواست AJAX
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام.

من میخوام فرم ثبت نام رو با استفاده از ajax بنویسم . فرم رو نوشتم و به درستی در دیتابیس ثبت میشه . اما موقع استفاده از flash message پیامی در view نمایش داده نمیشه.

کد مربوط به view:

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
       'id'=>'user-form',
       'clientOptions'=>array(
           'validateOnSubmit'=>true,

       ),
)); ?>

       <p class="note">Fields with <span class="required">*</span> are required.</p>

       <?php echo $form->errorSummary($model); ?>

       <div class="row">
               <?php echo $form->labelEx($model,'name'); ?>
               <?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>64)); ?>
               <?php echo $form->error($model,'name'); ?>
       </div>

       <div class="row">
               <?php echo $form->labelEx($model,'url'); ?>
               <?php echo $form->textField($model,'url'); ?>
               <?php echo $form->error($model,'url'); ?>
       </div>

   

       <div class="row buttons">
              <?php echo CHtml::ajaxSubmitButton(
     'Save',
     Yii::app()->createUrl('site/ajax'),
     array(
          'type'=>'POST',
   
           )
   ); 
?>
       </div>

<?php $this->endWidget(); ?>

</div>


<div id="test"></div>
<?php
    foreach(Yii::app()->user->getFlashes() as $key=> $message) {
        echo '<div class="alert alert-'.$key.'">' . $message . "</div>n";
    }
    
    ?>



کد controller:

        public function  actionAjax(){
            $model=new Images;  
           if(isset($_POST['Images'])){
               
               $model->attributes=$_POST['Images'];
               if($model->save()){
                  Yii::app()->user->setFlash('success', "با موفقیت ثبت شد");   
               }
         
           }
      $this->render('ajax',  compact('model'));

       }
سلام
برای نمایش flash باید ریدایرکت انجام بشه و تو ajax ریدایرکت نداریم.
برای نمایش پیغام یه مقدار رو داخل متغیر به عنوان پارامتر موقع رندر بفرست و تو صفحه هم بررسی کن اگه مقدارش درست باشه نمایش بده.

میتونی از اکستنشن زیر هم استفاده کنی، من تست نکردم ولی ظاهرا این مشکل رو نداره + امکانات بیشتری هم داره:
http://www.yiiframework.com/extension/userflash