【问题标题】:Laravel dynamic data populate in bootstrap modalLaravel 动态数据以引导模式填充
【发布时间】:2018-06-10 23:04:41
【问题描述】:
我已放置在仪表板中的引导模式。将填充模态的按钮放置在另一个页面中,并在其中扩展了仪表板。
当我点击不同的产品 ID 按钮时,产品相关信息应该以模态显示。我的问题是如何让它动态化。意味着引导模式将根据我单击的产品填充以进行快速查看。
**button for quick view in index.blade.php :**
<div class="btn-quickview">
<a href="#" data-toggle="modal" data-target="#modal-quickview">
<i class="fa fa-search-plus" aria-hidden="true">
</i> Quick View
</a>
</div>
**Modal placed in dashboard.blade.php**
<div id="modal-quickview" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-body">
<button type="button" class="close myclose" data-dismiss="modal">×</button>
<div class="product-view-area">
<div class="col-xs-12 col-sm-7 col-lg-7 col-md-7 product-details-area">
<div class="product-name">
<h2>Lorem Ipsum is simply</h2>
</div>
<div class="price-box">
<p class="special-price"> <span class="price-label">Special Price</span> <span class="price"> $329.99 </span> </p>
<p class="old-price"> <span class="price-label">Regular Price:</span> <span class="price"> $359.99 </span> </p>
</div>
</div>
</div>
</div>
<div class="modal-footer"> <a href="#" class="btn-services-shop-now" data-dismiss="modal">Close</a> </div>
</div>
</div>
</div>
【问题讨论】:
标签:
php
jquery
twitter-bootstrap
laravel
laravel-5
【解决方案1】:
您可以通过 jQuery ajax 为引导模式加载内容
<div id="view-modal" class="modal fade"
tabindex="-1" role="dialog"
aria-labelledby="myModalLabel"
aria-hidden="true" style="display: none;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close"
data-dismiss="modal"
aria-hidden="true">
×
</button>
<h4 class="modal-title">
<i class="glyphicon glyphicon-user"></i> User Profile
</h4>
</div>
<div class="modal-body">
<div id="modal-loader"
style="display: none; text-align: center;">
<img src="ajax-loader.gif">
</div>
<!-- content will be load here -->
<div id="dynamic-content"></div>
</div>
<div class="modal-footer">
<button type="button"
class="btn btn-default"
data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div><!-- /.modal -->
<button data-toggle="modal" data-target="#view-modal"
id="getUser" class="btn btn-sm btn-info"
data-url="{{ route('dynamicModal',['id'=>$id])}}"
>
Submit
</button>
<script>
$(document).ready(function(){
$(document).on('click', '#getUser', function(e){
e.preventDefault();
var url = $(this).data('url');
$('#dynamic-content').html(''); // leave it blank before ajax call
$('#modal-loader').show(); // load ajax loader
$.ajax({
url: url,
type: 'GET',
dataType: 'html'
})
.done(function(data){
console.log(data);
$('#dynamic-content').html('');
$('#dynamic-content').html(data); // load response
$('#modal-loader').hide(); // hide ajax loader
})
.fail(function(){
$('#dynamic-content').html('<i class="glyphicon glyphicon-info-sign"></i> Something went wrong, Please try again...');
$('#modal-loader').hide();
});
});
});
</script>
在路由文件中
Route::get('dynamicModal/{id}',[
'as'=>'dynamicModal',
'uses'=> 'ControllerName@loadModal'
]);
在控制器中
public function loadModal($id)
{
// write your process if any
return view('view_having_model_body',['data'=>$ifAnyData]);
}
【解决方案2】:
另一种动态执行此操作的方法,将您的产品 ID 添加到数据目标中,例如
<a href="#"
data-title="Lorem Ipsum is simply"
data-old-price="$359.99"
data-special-price="$329.99"
data-toggle="modal"
data-target="#modal-quickview{{$product->id}}"
>
对模态体ID做同样的事情
<div id="modal-quickview{{$product->id}}"
class="modal fade"
tabindex="-1"
role="dialog"
aria-labelledby="myModalLabel"
aria-hidden="true"
style="display: none;"
>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
在这种情况下,laravel 为每个模态生成一个唯一的 id。在模态正文中,您只需要根据他们的 id 显示产品
【解决方案3】:
您可以在锚点中添加所需的数据值,并将值附加到模式弹出窗口中。你可以这样实现:
<a href="#" data-title="Lorem Ipsum is simply" data-old-price="$359.99" data-special-price="$329.99" data-toggle="modal" data-target="#modal-quickview">
<i class="fa fa-search-plus" aria-hidden="true">
</i> Quick View
</a>
<script>
$(function(){
$('.btn-quickview').on('click','a',function(ev){
$('.product-name').find('h2').html($(this).attr('data-title'))
$('.special-price').find('.price').html($(this).attr('data-special-price'))
$('.old-price').find('.price').html($(this).attr('data-old-price'))
})
})
</script>
如果您不想将数据属性附加到锚点,您可以通过 Ajax 获取数据并适当地设置值;)