Php 呼叫拉威尔的两名控制员
我已经开始创建一个网站,用下面的评论部分展示放大器。 因此,我已设法让我的放大器的详细资料,以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 呼叫拉威尔的两名控制员,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
<?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'));
}
}