Php 呼叫拉威尔的两名控制员

Php 呼叫拉威尔的两名控制员,php,laravel,Php,Laravel,我已经开始创建一个网站,用下面的评论部分展示放大器。 因此,我已设法让我的放大器的详细资料,以diplay自己和类似的评论/评论。 然而,我的视图存在的问题是,当我调用这两个函数时,会出现错误“Facade\Ignition\Exceptions\ViewException” 未定义变量:product(视图:C:\XAMPP\htdocs\Term\u One\u Assignment\u Benjamin\u Robinson\u U1655703\resources\views\produ

我已经开始创建一个网站,用下面的评论部分展示放大器。 因此,我已设法让我的放大器的详细资料,以diplay自己和类似的评论/评论。 然而,我的视图存在的问题是,当我调用这两个函数时,会出现错误“Facade\Ignition\Exceptions\ViewException” 未定义变量:product(视图:C:\XAMPP\htdocs\Term\u One\u Assignment\u Benjamin\u Robinson\u U1655703\resources\views\product\product.blade.php)”

现在我知道它们分别正确工作,但以前从未调用过类似的东西

Web.php(路由)

控制器放大器

<?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]);
    }

}

首先,同一条路线不能使用两次

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');
或者简单地保留一条路线,并使用一个控制器访问(产品和评论)


根据您的共享视图,它需要模型数据产品评论集合。

您可以在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'));
    }

}
控制器:

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'));
    }

}

你想达到什么目标?但我可以看到两条路线是一样的。因此,它不适用于相同的路径。您只能在另一个请求是
get
而另一个请求是
post
时执行此操作,因此对于您的情况,只需将代码传输到一个控制器,并在刀片文件中返回所有必要的变量。您好,我正在尝试创建一个类似亚马逊在其产品页面上使用的系统。在本例中,他们从Products表中显示产品,然后在页面的下一步,他们在Comments表中显示评论。啊,我以前用过它,但只用于更新我的评论字段。我没有意识到get函数不能以相同的方式调用。嗨,谢谢你,它起作用了,但不幸的是,我无法让它们单独显示在一个页面上。感谢你的反馈,我现在已经设法让它起作用了:)只是为了合计,看起来您不知道如何使用
Route::resource
。尝试学习如何使用它,它将使您的路由文件更干净。祝你的拉威尔之旅好运!
class ProductsController extends Controller
{
    public function show (Product $product)
    {
        $product  = Product::find(1);
        $comments = Comment::all();

        return view ('product.product', compact ('product', 'comments'));
    }

}