拉拉维尔 5.0 |更改默认操作的名称不适用于资源控制器



我在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']);

最新更新