Yii2 Modal link 不调用控制器
Yii2 Modal link not calling controller
我正在尝试打开模态框并将视图加载到其中。
我可以使用 JS 来完成此操作,但我正在尝试使用更简单的方法来完成此操作。
我在 Yii2 中使用 BS4
我的link:
<a data-toggle="modal" data-target="#modal-contact-us" href="<?= Url::to(['site/contact-us']) ?>">Contact Us</a>
我的模态:
Modal::begin(
[
'options' => [
'id' => 'modal-contact-us'
]
]
);
echo "<div id='modalContent'></div>";
Modal::end();
我的控制器:(SiteController)
public function actionContactUs()
{
$model = new ContactUsForm();
return $this->renderAjax('_contactUs');
}
我的看法:(_contactUs)
<div class="row">
<div class="col-12">
<p>
Ok It's working
</p>
</div>
</div>
实际上,它打开了模态框,但没有将视图加载到其中,这至少告诉我模态函数正在运行。
当我删除 link 中的数据切换时,视图会在单独的页面中加载,因此我知道控制器正在独立工作。
当我删除数据目标时,什么也没有发生
我不确定如何让 href 调用控制器和数据属性一起工作。
我的代码基于之前的 post 进行测试:
这是 link 所在视图中呈现的模态:
<div id="modal-contact-us" class="fade modal" role="dialog" tabindex="-1" aria-hidden="true" aria-labelledby="modal-contact-us-label">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 id="modal-contact-us-label" class="modal-title">Contact US</h5>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div id='modalContent'></div>
</div>
</div>
</div>
</div>
在正确方向上的任何一点都将不胜感激。我再次可以并且已经使用 JS 做到了这一点:
<a href="<?= Url::to(['site/contact-us']) ?>" class='show_contact_us_modal'>Contact Us</a>
$(function(){
$(document).on('click', '.show_contact_us_modal', function(){
$('#modal_contact_us').modal('show')
.find('#modalContent')
.load($(this).attr('value'));
});
});
谢谢
模态小部件不会自行加载任何内容。你可以添加事件监听器来预加载内容
<a data-toggle="modal" data-target="#modal-contact-us">Contact Us</a>
<?php
Modal::begin([
'options' => [
'id' => 'modal-contact-us'
]
]);
Modal::end();
?>
<script>
$('#modal-contact-us').on('show.bs.modal', function (e) {
$('#modal-contact-us .modal-body').load('<?= Url::to(['site/contact-us']) ?>');
});
</script>
我正在尝试打开模态框并将视图加载到其中。
我可以使用 JS 来完成此操作,但我正在尝试使用更简单的方法来完成此操作。
我在 Yii2 中使用 BS4
我的link:
<a data-toggle="modal" data-target="#modal-contact-us" href="<?= Url::to(['site/contact-us']) ?>">Contact Us</a>
我的模态:
Modal::begin(
[
'options' => [
'id' => 'modal-contact-us'
]
]
);
echo "<div id='modalContent'></div>";
Modal::end();
我的控制器:(SiteController)
public function actionContactUs()
{
$model = new ContactUsForm();
return $this->renderAjax('_contactUs');
}
我的看法:(_contactUs)
<div class="row">
<div class="col-12">
<p>
Ok It's working
</p>
</div>
</div>
实际上,它打开了模态框,但没有将视图加载到其中,这至少告诉我模态函数正在运行。
当我删除 link 中的数据切换时,视图会在单独的页面中加载,因此我知道控制器正在独立工作。 当我删除数据目标时,什么也没有发生
我不确定如何让 href 调用控制器和数据属性一起工作。
我的代码基于之前的 post 进行测试:
这是 link 所在视图中呈现的模态:
<div id="modal-contact-us" class="fade modal" role="dialog" tabindex="-1" aria-hidden="true" aria-labelledby="modal-contact-us-label">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 id="modal-contact-us-label" class="modal-title">Contact US</h5>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div id='modalContent'></div>
</div>
</div>
</div>
</div>
在正确方向上的任何一点都将不胜感激。我再次可以并且已经使用 JS 做到了这一点:
<a href="<?= Url::to(['site/contact-us']) ?>" class='show_contact_us_modal'>Contact Us</a>
$(function(){
$(document).on('click', '.show_contact_us_modal', function(){
$('#modal_contact_us').modal('show')
.find('#modalContent')
.load($(this).attr('value'));
});
});
谢谢
模态小部件不会自行加载任何内容。你可以添加事件监听器来预加载内容
<a data-toggle="modal" data-target="#modal-contact-us">Contact Us</a>
<?php
Modal::begin([
'options' => [
'id' => 'modal-contact-us'
]
]);
Modal::end();
?>
<script>
$('#modal-contact-us').on('show.bs.modal', function (e) {
$('#modal-contact-us .modal-body').load('<?= Url::to(['site/contact-us']) ?>');
});
</script>