#laravel
#laravel
Вопрос:
Я хочу передать переменную из моего контроллера в файл блейда в Laravel. У меня есть два разных метода в моем контроллере. Переменная в представлении поступает из двух разных методов; вывод одной переменной зависит от вывода другой. Я хочу, чтобы она была сохранена в моем первом выводе переменной, который поступает из метода, и когда я передаю другую переменную, она будет выполняться без ошибки неопределенной переменной. Как я могу это сделать в Laravel?
Контроллер
public function index2($id)
{
$categories1 = Category::find($id);
$products = $categories1->products->take(8);
$carousel = carousel::all();
$second_carousel = SecondCarousel::all();
$second_carousel2 = SecondCarousel::all();
$carousel1 = $second_carousel->first();
$carousel2 = $second_carousel->take(-4);
$categories = Category::all()->take(-3);
$category = Category::all()->first();
return view('onlineshop.index',
compact('carousel', 'carousel1', 'carousel2', 'categories', 'category', 'products'));
}
public function quickview($id)
{
$product_quickview = Product::find(1);
return view('onlineshop.index', compact('product_quickview'));
}
Блейд
@isset($products)
@foreach($products as $product)
<li>
<figure>
<a class="aa-product-img" href="#">
<img src="{{ URL::to('/') }}/uploads/product/{{$product->image ? $product->image->name: 'no carousel photo'}}"
alt="polo shirt img">
</a>
<a class="aa-add-card-btn" href="#"><span class="fa fa-shopping-cart"></span>Add To Cart</a>
<figcaption>
<h4 class="aa-product-title"><a href="#">{{$product->name}}</a></h4>
<span class="aa-product-price">${{$product->price}}</span><span class="aa-product-price"></span>
</figcaption>
</figure>
<div class="aa-product-hvr-content">
<a href="#" data-toggle="tooltip" data-placement="top" title="Add to Wishlist"><span
class="fa fa-heart-o"></span></a>
<a href="#" data-toggle="tooltip" data-placement="top" title="Compare"><span
class="fa fa-exchange"></span></a>
<a href="{{route('product.quick_view',$product->id)}}" data-toggle2="tooltip" data-placement="top"
title="Quick View" data-toggle="modal" data-target="#quick-view-modal">
<button><span class="fa fa-search"></span></button>
</a>
</div>
<!-- product badge -->
<span class="aa-badge aa-sale">SALE!</span>
</li>
@endforeach
@endisset
@isset($product_quickview)
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="aa-product-view-content">
<h3>T-Shirt</h3>
<div class="aa-price-block">
<span class="aa-product-view-price">{{$product->price}}</span>
<p class="aa-product-avilability">Avilability: <span>In stock</span></p>
</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Officiis animi, veritatis quae repudiandae
quod nulla porro quidem, itaque quis quaerat!
</p>
<h4>Size</h4>
<div class="aa-prod-view-size">
<a href="#">S</a>
<a href="#">M</a>
<a href="#">L</a>
<a href="#">XL</a>
</div>
<div class="aa-prod-quantity">
<form action="">
<select name="prod" id="prod">
<option value="0" selected>1</option>
<option value="1">2</option>
<option value="2">3</option>
<option value="3">4</option>
<option value="4">5</option>
<option value="5">6</option>
</select>
</form>
<p class="aa-prod-category">
Category: <a href="#">Polo T-Shirt</a>
</p>
</div>
<div class="aa-prod-view-bottom">
<a href="#" class="aa-add-to-cart-btn"><span class="fa fa-shopping-cart"></span>Add To Cart</a>
<a href="#" class="aa-add-to-cart-btn">View Details</a>
</div>
</div>
</div>
@endisset
Комментарии:
1. Почему вы используете два метода для одного и того же файла просмотра?
2. потому что вывод второго метода зависит от первого метода!
3. чего вы хотите достичь. Кажется, вы делаете что-то не так. вот почему вы должны вызвать две функции.
Ответ №1:
Шаг 1: Создайте новый файл блейда product_quiqe_view.blade.php
@isset($product_quickview)
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="aa-product-view-content">
<h3>T-Shirt</h3>
<div class="aa-price-block">
<span class="aa-product-view-price">{{$product->price}}</span>
<p class="aa-product-avilability">Avilability: <span>In stock</span></p>
</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Officiis animi, veritatis quae repudiandae
quod nulla porro quidem, itaque quis quaerat!
</p>
<h4>Size</h4>
<div class="aa-prod-view-size">
<a href="#">S</a>
<a href="#">M</a>
<a href="#">L</a>
<a href="#">XL</a>
</div>
<div class="aa-prod-quantity">
<form action="">
<select name="prod" id="prod">
<option value="0" selected>1</option>
<option value="1">2</option>
<option value="2">3</option>
<option value="3">4</option>
<option value="4">5</option>
<option value="5">6</option>
</select>
</form>
<p class="aa-prod-category">
Category: <a href="#">Polo T-Shirt</a>
</p>
</div>
<div class="aa-prod-view-bottom">
<a href="#" class="aa-add-to-cart-btn"><span class="fa fa-shopping-cart"></span>Add To Cart</a>
<a href="#" class="aa-add-to-cart-btn">View Details</a>
</div>
</div>
</div>
@endisset
Шаг 2: Включить product_quiqe_view.blade.php файл в index.blade.php файл, подобный:
@isset($products)
@foreach($products as $product)
-------
@endforeach
@endisset
@include('product_quiqe_view');
шаг 3: В контроллере:
public function quickview($id)
{
$product_quickview = Product::find(1);
return view('onlineshop.product_quiqe_view',compact('product_quickview'))->render();
}