为了账号安全,请及时绑定邮箱和手机立即绑定

在 laravel 中调用两个控制器

在 laravel 中调用两个控制器

PHP
桃花长相依 2022-05-27 15:00:43
我已经开始着手创建一个用于展示放大器的网站,并在下面提供评论部分。因此,我设法让我的放大器详细信息自行显示,并且与评论/评论相似。然而,我的观点的问题是,当我同时调用两者时,我得到错误“Facade\Ignition\Exceptions\ViewException Undefined variable: product (View: 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');控制器放大器<?phpnamespace 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]);    }}评论控制器<?phpnamespace 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'));    }我知道这可能很微不足道,但只是想知道是否有人有任何想法,因为 Laravel 的故障查找非常糟糕。有谁知道为什么这不起作用以及为什么会抛出该错误?
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

仅选择一个控制器,然后将所有必要的代码放在上面,如下所示:


路线:


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

    }


}


查看完整回答
反对 回复 2022-05-27
?
不负相思意

TA贡献1777条经验 获得超10个赞

首先,您不能两次使用相同的路线。


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

或者简单地保留一条路线并使用单个控制器访问(产品和评论)。


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


查看完整回答
反对 回复 2022-05-27
?
largeQ

TA贡献2039条经验 获得超7个赞

您可以在 route.php 中定义相同的路由。但第一条路线将被忽略。


请尝试执行以下操作。


Route::get('product/{product}/show', 'ProductsController@show');

Route::get('product/{product}/comment', 'CommentController@comment');


查看完整回答
反对 回复 2022-05-27
  • 3 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信