[英]Calling Two controllers in laravel
我已經開始着手創建一個網站,在下面的注釋部分中顯示放大器。 因此,我設法使我的放大器詳細信息獨自發揮作用,並與注釋/評論相似。 但是,我的觀點的問題是,當我同時調用這兩者時,我收到錯誤“ Facade \\ Ignition \\ Exceptions \\ ViewException未定義變量:product(視圖:C:\\ XAMPP \\ htdocs \\ Term_One_Assignment_Benjamin_Robinson_U1655703 \\ resources \\ views \\ product \\ product.blade。 php)“
現在,我知道它們可以單獨正常工作,但是以前從未調用過這樣的東西。
Web.php(路由)
Route::get('products/','ProductsController@index');
Route::get('product/{product}/', 'ProductsController@show');
Route::get('product/{product}/', 'CommentController@comment');
控制器放大器
<?php
namespace App\Http\Controllers;
use App\Product;
//use App\Comment;
use Illuminate\Http\Request;
class ProductsController extends Controller
{
public function show (Product $product)
{
return view ('product.product') -> with (['product' => $product]);
}
}
評論控制器
<?php
namespace App\Http\Controllers;
use App\Comment;
use Illuminate\Http\Request;
use Illuminate\Database\Eloquent;
class CommentController extends Controller
{
public function comment (){
$comments = Comment::all ();
return view ('product.product', compact ('comments'));
}
產品瀏覽
@extends('setup')
@section('page_title')
AmpCompare
@endsection
@section('page_heading')
<h2>AmpCompare</h2>
@endsection
@section('content')
<table>
<tbody>
<tr>
<td><h4>Make: </h4></td>
<td><p>{{ $product -> make }}</p></td>
</tr>
<tr>
<td><h4>Model: </h4></td>
<td><p>{{ $product -> model }}</p></td>
</tr>
<tr>
<td><h4>Watt: </h4></td>
<td><p>{{ $product -> watt }}</p></td>
</tr>
<tr>
<td><h4>Genre: </h4></td>
<td><p>{{ $product -> genre }}</p></td>
</tr>
<tr>
<td><h4>Description: </h4></td>
<td><p>{{ $product -> description }}</p></td>
</tr>
<tr>
<td><h4>Star Rating: </h4></td>
<td><p>{{ $product -> star_rating }}</p></td>
</tr>
<tr>
<td><h4>Image: </h4></td>
<td><p>{{ $product -> image }}</p></td>
</tr>
<tr>
<td><h6>Created at: </h6></td>
{{-- <td><h6>{{ $product -> created_at -> format ('l jS F') }}</h6></td>--}}
</tr>
<tr>
<td><h6>Last updated at: </h6></td>
{{-- <td><h6>{{ $product -> updated_at -> format ('l jS F') }}</h6></td>--}}
</tr>
</tbody>
</table>
<div class="back-button">
<p><a class="button" href="/products">Back</a></p>
</div>
@if (count ($comments) > 0)
@foreach ($comments as $c)
<div>
<div><span><h5 class="user">{{ $c -> user }}</h5></span></div>
<div><span><p class="comments">{{ $c -> comments }}</p>
<p class="comment-created_at">{{ $c -> created_at -> format ('D jS F') }}</p>
<p class="likes">{{ $c -> likes }}</p>
<p class="dislikes">{{ $c -> dislikes }}</p></span></div>
</div>
<div class="icon heart">
<div><a class="button" href="/comment/{{ $c -> id }}/"><ion-icon name="eye"></ion-icon></a>
<a class="button" href="/comment/{{ $c -> id }}/edit/"><ion-icon name="create"></ion-icon></a>
<a class="button" href="/comment/{{ $c -> id }}/delete/"><ion-icon name="trash"></ion-icon></a>
<a class="button" href="/comment/{{ $c -> id }}/like/"><ion-icon name="md-heart"></ion-icon></a>
<a class="button" href="/comment/{{ $c -> id }}/dislike"><ion-icon name="md-heart-empty"></ion-icon></a>
</div>
</div>
@endforeach
{{ $comments -> links () }}
@else
<div class="notification is-info">
<span class="no-comments">
<p>
{{-- There are currently no reviews on the {{ $product -> make }} {{ $product -> model }} {{ $product -> watt }} amplifier.--}}
</p>
</span>
</div>
@endif
@endsection
我知道這可能是微不足道的,但只是想知道是否有人對Laravel的故障查找感到任何想法。
有誰知道為什么這不起作用以及為什么會引發該錯誤?
首先,您不能兩次使用同一條路線。
Route::get('product/{product}/', 'ProductsController@show');
Route::get('product/{product}/', 'CommentController@comment');
如果您可以執行以下操作:
Route::get('product/{product}/', 'ProductsController@show');
Route::get('product/{product}/comments', 'CommentController@comment');
或者,只需保持一條路線,並使用一個控制器即可訪問(產品和評論)。
根據您的共享視圖,它需要Models數據Product和Comments集合。
您可以在route.php中定義相同的路由。 但是第一個路線將被忽略。
請嘗試執行以下操作。
Route::get('product/{product}/show', 'ProductsController@show');
Route::get('product/{product}/comment', 'CommentController@comment');
僅選擇一個控制器,然后在其上放置所有必需的代碼,如下所示:
路線:
Route::get('product/{product}/', 'ProductsController@show');
控制器:
class ProductsController extends Controller
{
public function show (Product $product)
{
$product = Product::find(1);
$comments = Comment::all();
return view ('product.product', compact ('product', 'comments'));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.