javascript - 产品未定义 Laravel
问题描述
当我在控制器中设置 products 变量时出现此错误Undefined variable: $productsTR
,我有一个主刀片和一个部分刀片。主刀片是将数据发送到控制器然后返回到部分刀片的刀片。我该如何解决这个问题Undefined variable: $productsTR
?
家庭控制器
public function viewProduct($id){
$productsTR = Product::with('ProductsPhoto')->where('id',$id)->get();
$returnHTML = view('productdetail')->with('productsTR', $productsTR)->render();
return response()->json(array('success' => true, 'html'=>$returnHTML));
}
路线
Route::get('view-product/{id}', 'HomeController@viewProduct')->name('view.producT');
部分刀片(productdetail)
@foreach($productsTR as $product)
@foreach($product->ProductsPhoto as $productImage)
<img src="{{ Storage::url($productImage->filename) }}" alt="small">
@endforeach
@endforeach
主刀片
<div class="modal fade" id="view-product" tabindex="-1" role="dialog" aria-
labelledby="myModalLabel">
<div class="modal-dialog" role="document">
@include('productdetail')
</div>
</div>
@foreach($products as $product)
@if(count($product->ProductsPhoto))
<a href="javascript:;" id="{{$product->id}}" class="modal-global" >
<img src="{{Storage::url($product->ProductsPhoto[0]->filename)}}" alt="" >
</a>
@endif
@endforeach
Javascript
<script>
$('.modal-global').click(function(event) {
event.preventDefault();
var product_id = $(this).attr("id");
var url = '{{route('view.producT',[":product_id"])}}';
url = url.replace(':product_id', product_id);
$("#view-product").modal('show');
$.ajax({
url: url,
type: 'GET',
dataType: 'html',
})
.done(function(response) {
$("#view-product").find('.view-product').html(response);
});
});
</script>
主刀片(ProductController)
public function index(Request $request)
{
$userId = $request->user()->id;
$products = product::where('user_id', $userId)->paginate(20);
return view('product.index',compact('products'));
}
主刀路线
Route::get('/user/product', 'ProductController@index');
解决方案
方法一
问题是您没有在 index 函数中传递 $productsTR 。
public function index(Request $request)
{
$userId = $request->user()->id;
$products = product::where('user_id', $userId)->paginate(20);
$productsTR = NULL;//Add this line
return view('product.index',compact('products', 'productsTR')); //update here
}
然后在这里检查
<div class="modal-dialog" role="document">
@if($productsTR)
@include('productdetail')
@else
//add as per your needs or remove else part
@endif
</div>
方法二
或者,如果您只想通过脚本进行渲染,请这样做
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body" id="renderedView">
</div>
</div>
</div>
$.ajax({
type:'GET',
url:url,
dataType:'JSON,
success:function(response){
$("#renderedView").html(response.html);
}
});
如果您仅通过 ajax 进行渲染,则可以跳过第一种方法
推荐阅读
- c++ - Clang-Tidy:Operator=() 应该返回 '...&'
- flutter - 如何在 Stack 小部件中添加 PageView 小部件?
- python - “SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 58-60: truncated \uXXXX escape” 解析此字符串时出错
- android - Android 语言环境解析错误地回退而不是使用第二首选语言
- deep-learning - 激光雷达分割是否适用于自动驾驶汽车?
- angular - 将一个数组的值分配给另一个数组的每个值,并在打字稿中以 JSON 格式提交
- wordpress - 如何在现有的 WordPress 网站中添加登录页面
- c# - 如何从实体框架中的另一个项目将外键添加到现有表(实体)
- javascript - 将 n 个单词分成随机的 16 个单词分区
- r - 如何使用 For 循环为 Y 和 Z 列中每个关联的唯一观察值计算 X 列中的观察值的总值