我在route.php文件中创建了一个productController资源,如下所示:-
Route::resource('products','ProductController',['names' => ['create' => 'products.add']]);
以下是我的productController.php文件的样子:-
<?php namespace lvtestHttpControllers;
use lvtestHttpRequests;
use lvtestProduct;
use lvtestHttpControllersController;
use IlluminateHttpRequest;
class ProductController extends Controller {
/**
* Class constructor .. requires authentication
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$products = Product::all();
return view('products.productsList', ['products' => $products]);
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function add()
{
return 'Add a product';
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
return 'store new product?';
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id = null)
{
// $products = Product::all();
// print_r($products);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
return 'store new product?';
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
//
}
}
并传递"names"数组以将create方法的默认名称更改为add。当我转到localhost:8000/products/add时,我会得到一个空白页面。如何修复此
将['names' => ['create' => 'products.add']
添加到资源路由只会更改路由名称,而不会更改route方法。这意味着您可以将您的路线称为route('products.add')
,它将指向控制器上的create()
方法。
当你使用Route::resource
时,Laravel会期望你的控制器上有一个create()
方法。为了能够按照您的建议进行操作,您可能需要将该方法添加到控制器中,然后添加一个单独的路线:
Route::resource('products','ProductController');
Route::get('products/add', ['as' => 'products.add', 'uses' => 'ProductController@add']);