Как передать переменную другим методом от контроллера к блейду

#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();
    }