簡體   English   中英

在laravel中調用兩個控制器

[英]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數據ProductComments集合。

您可以在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM