2017-09-05 30 views
0

私はLaravelの初心者で、自分のサイトに簡単な検索バーを構築しようとしています。Laravel Searchbarクラス 'products'が見つかりませんでした/ ProductController @?

しかし、私はこのエラーを取得する:

Class 'products' not found

誰かが私は私のコントローラに忘れてきたものを私にしてください教えてください。インデックスの

検索フォーム:

<ul class="searchbar"> 
    <form action="/search" class="light" method="POST" role="search"> 
{{ csrf_field() }} 
     <input type="text" class="form-control" name="q" placeholder="Find your item" /> 
     <input type="submit" value="Search" /> 
    </form> 

search.blade.php:

@extends('master.main') 

@if(Auth::check()) 

@section('main-content') 

    @component('master.notification') 

    @slot('size') 

    col-md-8 col-md-offset-2 

    @endslot 

    @slot('title') 

    Product Search 

    @endslot 

    <div class="container"> 
    @if(isset($products)) 
    <h2>Product Search</h2> 
     <table class="table table-striped"> 
      <thead> 
       <tr> 
        <th>Product</th> 
        <th>Description</th> 
       </tr> 
      </thead> 
      <tbody> 
       @foreach($products as $dummy) 
       <tr> 
        <td>{{$dummy->name}}</td> 
        <td>{{$dummy->description}}</td> 
       </tr> 
       @endforeach 

      </tbody> 
     </table> 
     {!! $products->render() !!}@endif 
    </div> 
     <div class="container"> 
      @if(isset($details)) 
      <p> The Search results for <b> {{ $query }} </b> are :</p> 
      <h2>Product Search</h2> 
      <table class="table table-striped"> 
       <thead> 
        <tr> 
         <th>Product</th> 
         <th>Description</th> 
        </tr> 
       </thead> 
       <tbody> 
        @foreach($details as $products) 
        <tr> 
         <td>{{$products->name}}</td> 
         <td>{{$products->description}}</td> 
        </tr> 
        @endforeach 
       </tbody> 
      </table> 

      @if($details){!! $details->render() !!}@endif 
      @elseif(isset($message)) 
      <p>{{ $message }}</p> 
      @endif 
     </div> 

    @endcomponent 

@stop 

@endif 

web.php:

Route::get ('/', function() { 
    $mydatabase = products::paginate(25); 
    return view ('search')->withproducts($mydatabase); 
}); 

Route::any ('/search', function() { 
    $q = Input::get ('q'); 
    if($q != ""){ 
    $products = products::where ('name', 'LIKE', '%' . $q . '%')->orWhere ('description', 'LIKE', '%' . $q . '%')->paginate (5)->setPath (''); 
    $pagination = $products->appends (array (
       'q' => Input::get ('q') 
     )); 
    if (count ($products) > 0) 
     return view ('search')->withDetails ($products)->withQuery ($q); 
    } 
     return view ('search')->withMessage ('No Products found. Try to search again !'); 
}); 

エラーがから来ている:

Route::get ('/', function() { $mydatabase = products::paginate(25);

productsまたはProduct::paginateが定義されているか、私は[email protected]web.phpに使用する必要がありますどのように?はい、私はデータベーステーブルが見つかりませんproducts;)私はproductsの代わりにProductが正しいと思いますか?

/App/Product.php:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Storage; 

class Product extends Model 
{ 
    public function category(){ 
     return $this->belongsTo('App\Category'); 
    } 
    public function seller(){ 
     return $this->belongsTo('App\User'); 
    } 
    public function buyer(){ 
     return $this->belongsTo('App\User'); 
    } 

    public function bids(){ 
     return $this->hasMany('App\Bid'); 
    } 
    public function purchases(){ 
     return $this->hasMany('App\Purchase'); 
    } 



} 
+0

ルートに製品モデルを含める必要があります。それを含めましたか?製品モデルを作ったのですか?データベーステーブルと同じモデル名ですか? –

+0

モデルページをシェアしよう! – C2486

+0

App/Product.php(モデルページ)が追加されました。 –

答えて

0

あなたは

use namespace\products 

は、あなたの名前空間(クラスの製品のパス)exempleで名前空間を置き換える追加するには、コントローラの開始(あなたのケースのためweb.php)に(自分のクラスの製品をインポートする)必要があります\アプリケーション はコントローラProductControllerを使用し、関数を再定義する方が良い

+0

があります。私は今追加しました:use app \ Product。しかし、エラーが発生している可能性があります。 –

0

貴社の製品モデルはProductある場合は、あなたはあなたのコードにタイプミスがあります。

Route::get ('/', function() { 
$mydatabase = Products::paginate(25); 
return view ('search')->withproducts($mydatabase); 
}); 

あなたはproducts::paginate希望

Product::paginate()にあなたのコード変更のタイプミスがあり、これは

+0

商品モデルページが追加されました。レビューしてください。私はその正しいページを願っています。私のweb.phpファイルに –

0

\App\products::paginateproducts::paginateを交換してみてください役立ちますか?

Laravelは名前空間であるため、正しい名前でクラスを見つけることはできません。

0

Laravel 5は、モデルやコントローラなどの名前空間の使用を促進します。あなたのモデルは、App名前空間の下にあるので、あなたのコードは次のようにそれを呼び出す必要があります:

ルート::取得( '/'、機能(){

$myDatabase= \App\Products::paginate(25); 

});

0

解決済み!ビッグおかげでみんなあなたの助けに!

私はちょうど私のweb.phpファイルに

use App\Product;

を追加し、素晴らしい作品なければなりませんしています!

関連する問題