【问题标题】:My show function is not working in Laravel. URL shows the particular id, but in the page data won't come我的显示功能在 Laravel 中不起作用。 URL显示特定的ID,但在页面数据不会来
【发布时间】:2020-08-11 04:49:15
【问题描述】:

当我点击产品页面上的特定产品时,它会将我引导至单个产品页面。特定的产品 ID 也显示在 URL 中。但是数据不会被传递。我的单个产品页面没有显示特定的产品数据。

这是我的控制器。

SingleProductController.php


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Product;
use App\Category;

class SingleProductController extends Controller
{
    public function index(Product $product)
    {
        $arr['product'] = $product;
        return view('singleproducts')->with($arr);

    }

    
    public function create()
    {
        //
    }

   
    public function store(Request $request)
    {
        //
    }

    
    public function show($id)
    { 
    

        $product = Product::find($id);
       
        return view ('singleproducts')->with(['product'=>$product]);
    }

   
    public function edit($id)
    {
        //
    }

    
    public function update(Request $request, $id)
    {
        //
    }

   
    public function destroy($id)
    {
        //
    }
}

这是我的刀片文件。

singleproducts.blade


@extends('layouts.singleproducts')
@section('content')

   <h2 class="font-size-25 text-lh-1dot2">{{ $product ['prod_name'] }}  </h2>

 <div class="mb-4">
                                    <div class="d-flex align-items-baseline">
                                        <ins class="font-size-36 text-decoration-none">{{ $product ['prod_price'] }}</ins>
                                        <del class="font-size-20 ml-2 text-gray-6">$2,299.00</del>
                                    </div>
                                </div>
    
@endsection

这是我的路线。

web.php

Route::get('/singleproducts', 'SingleProductController@index')->name('singleproducts');
Route::get('/singleproducts/{id}', 'SingleProductController@show')->name('eachproduct');

为什么我的显示功能不起作用?

【问题讨论】:

  • 因为显示功能出错
  • 公共功能展示($id) { $product = Product::find($id);返回视图('singleproducts', ['product' => $product]); }
  • 我在上面编辑了我的代码,请看一下。这也行不通。
  • 请分享您的单页产品路线
  • Route::resource('/products', 'ProductsController'); Route::get('/singleproducts', 'SingleProductController@index')->name('singleproducts'); Route::get('/eachproduct/{id}', 'SingleProductController@show')->name('eachproduct');

标签: php laravel


【解决方案1】:

路由.php

Route::get('/singleproducts', 'SingleProductController@index')->name('singleproducts');
Route::get('/eachproduct/{id}', 'SingleProductController@show')->name('eachproduct');

产品列表页面

@if (isset($products) && count($products) > 0)
    @foreach ($products as $product)
    <div class="blog_box_inner" style="cursor: pointer;" >
        <h1 class="blog_inner_heading">
            <a href="/eachproduct/{{$product['id']}}" class="blog_readmore_link">
                {{$product['prod_name']}}
            </a>
        </h1>
    </div>
    @endforeach
    @endif

单页

<h2 class="font-size-25 text-lh-1dot2">{{ $product['prod_name']}}  </h2>

控制器

public function index() {
    $products = Product::orderBy('id', 'DESC')->get();
    return view('')->with(compact('products'));
}

public function show($id) {
    $product = Product::find($id);
     return view('')->with(compact('product'));
}

希望它对您有帮助。

【讨论】:

    【解决方案2】:

    这样使用

    return view('singleproducts',compact('product'));
    

    在你看来像这样使用

    <h2 class="font-size-25 text-lh-1dot2">{{ $product->prod_name }}  </h2>
    <ins class="font-size-36 text-decoration-none">{{ $product->prod_price }}</ins>
    

    【讨论】:

      【解决方案3】:

      试试这个

       public function show(Product $product)
      { 
          return view ('singleproducts', compact('product'));
      }
      

      并通过路线

      Route::get('/eachproduct/{product}', 'SingleProductController@show')->name('eachproduct');
      

      并在您的视图页面中获取产品数据

      singleproducts.blade
      
      
      @extends('layouts.singleproducts')
      @section('content')
      
      <h2 class="font-size-25 text-lh-1dot2">{{ $product->prod_name }}  </h2>
      <div class="mb-4">
      <div class="d-flex align-items-baseline">
      <ins class="font-size-36 text-decoration-none">{{ $product->prod_price }}</ins>
      <del class="font-size-20 ml-2 text-gray-6">$2,299.00</del>
      </div>
      </div>
      
      @endsection
      

      它会根据 id 自动找到您的产品。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 2019-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        相关资源
        最近更新 更多