【问题标题】:show the data in dropdown fetched from database using laravel 8显示使用 laravel 8 从数据库中获取的下拉列表中的数据
【发布时间】:2021-09-01 09:24:55
【问题描述】:

我必须在产品表单的下拉列表中显示类别值,给定的代码是我认为的,错误是未定义的 $categories。这是我在 laravel 中的第一个代码,我不知道如何在其他文件中进行更改。哪个变量在 foreach 中使用?或者我必须在 ProductController 中创建新函数?

<form action="/upload_product" method="post">
    @csrf
    <label>Choose Categories</label>
    <select name="category_id" id="category" class="category">
        <option disable selected>--select category--</option>
        @foreach($categories as $item)
        <option value="{{ $item->id }}">{{ $item->name}}</option>
    @endforeach
    </select>
        <input type="text" name="name" placeholder="name">
        <input type="number" name="sale_price" placeholder="sale_price">
   </form>

模型产品.php

        class Product extends Model
           {
     use HasFactory; 
     protected $table = 'products';
     public $timestamps = true;

    public function category(){
    return $this->belongsTo('App\Models\Category');
} 

} 模型类别.php

   class Category extends Model
  {
    use HasFactory;
    public $fillable = [ 'name' ];
    protected $dates = [ 'deleted_at' ];
    public $timestamps = true;

    public function products (){
    return $this->hasMany('App\Models\Product');
  }
}

ProductController.php

   <?php
 namespace App\Http\Controllers; 
 use App\Models\Product;
 use App\Models\Category;
 use Illuminate\Http\Request;

class ProductController extends Controller
{ 
  public function index()
{
    $products = Product::all(); 
    return view('products/index', ['products'=>$products]);
}
 public function view()
{
  $products = Product::with('category')->get(); 
  $categories = Category::with('products')->get();
  return view ('product.view')-> with([
    'products' => $products,
    'categories' => $categories,
]);
}

【问题讨论】:

  • 哪个错误来自viewindex
  • 索引文件中未定义的 $categories

标签: laravel drop-down-menu


【解决方案1】:

你必须像下面这样使用

public function index(){
    $products   = Product::all(); 
    $categories = Category::with('products')->get();
    return view('products.index', compact('products','categories'));
}

【讨论】:

  • 谢谢,但如果我必须显示多个下拉菜单,如单位、品牌,那么我必须在这个索引函数中进行更改?
  • 是的,您必须在compact中添加其他模型数据
【解决方案2】:

您的索引文件中没有$categories。 基于index 方法,您只是发送产品:

public function index()
{
    $products = Product::all(); 
    return view('products/index', ['products'=>$products]);
}

所以也要添加类别。

【讨论】:

    【解决方案3】:
      public function index()
    {
    
    
     $products = Product::get(); 
        return view('products/index', ['products'=>$products]);
    
    }
    

    【讨论】:

    • 欢迎来到 StackOverflow。虽然此代码可能会回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将提高​​答案的长期价值。
    【解决方案4】:

    你可以通过三种方式做到这一点

    public function index(){
        $products   = Product::all(); 
        $categories = Category::with('products')->get();
        return view('products.index', compact('products','categories'));
    }
    
    public function index(){
        $products   = Product::all(); 
        $categories = Category::with('products')->get();
        return view('products.index')->with(['products'=>$products,'categories'=>$categories]));
    }
    
    public function index(){
            $data['products']   = Product::all(); 
            $data['categories'] = Category::with('products')->get();
            return view('products.index',$data);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2021-11-02
      相关资源
      最近更新 更多