在$ content上方的布局文件中包含alert.php。具体如下:
<?php Pjax::begin(['id'=> 'new-alert','enablePushState' => false]); ?>
<?= \odaialali\yii2toastr\ToastrFlash::widget([
'options' => [
'positionClass' => 'toast-bottom-full-width',
//'progressBar' => true,
'timeOut' => 6000,
'extendedTimeOut' => 2000
]
]);?>
<?php Pjax::end(); ?>
要在ajax中获取flash消息,可以调用下面的容器
$.pjax.reload({container:'#new-alert'});
这会显示警告消息,但也会向URL发送Ajax请求,无论打开哪个页面。我们可以触发&#34; / site / toast&#34;在ajax调用哪些可以renderAjax上面的小部件代替在当前网址上发出ajax请求?
由于没有html&#34; a&#34;很好地标记任何&#34;形式&#34;标签里面的widget生成的html,这是正确使用pjax吗?
http://localhost:8081/about-us?_pjax=%23new-alert
表单的Pjax
另外如果我们在Pjax中包装一个Active Form,我们怎样才能确保没有A标签或嵌套Form触发除容器表单之外的Pjax请求?
答案 0 :(得分:0)
我已从PHP中删除了对pjax的调用,并发出如下警告 -
<div id="new-alert">
<?= \odaialali\yii2toastr\ToastrFlash::widget([
'options' => [
'positionClass' => 'toast-bottom-full-width',
//'progressBar' => true,
'timeOut' => 6000,
'extendedTimeOut' => 2000
]
]); ?>
</div>
相反,我正在使用javascript调用pjax,如下所示 -
$.pjax({url: encodeURI(baseUri + "site/toast"), container: '#new-alert', push: false})
public function actionToast()
{
if(Yii::$app->request->getHeaders()->has('X-PJAX'))
{
return $this->renderAjax('//common/alert');
}
else
{
return $this->redirect(Yii::$app->request->referrer);
}
}
$。pjax.reload之前检索过其他toast,如果当前的url也有。以上解决方案只能获得与ajax相关的祝酒词。