我在route.php文件中创建了一个productController资源,如下所示: -
Route::resource('products','ProductController',['names' => ['create' => 'products.add']]);
以下是我的productController.php文件的样子: -
<?php namespace lvtest\Http\Controllers;
use lvtest\Http\Requests;
use lvtest\Product;
use lvtest\Http\Controllers\Controller;
use Illuminate\Http\Request;
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'数组,将创建方法的默认名称更改为添加。 当我去localhost:8000 / products / add我得到一个空白页面。 我该如何解决这个
答案 0 :(得分:2)
将['names' => ['create' => 'products.add']
添加到资源路由只会更改路由名称,而不会更改路由方法。这意味着您可以将您的路线称为route('products.add')
,并指向控制器上的create()
方法。
当您使用Route::resource
时,Laravel会希望您的控制器上有create()
方法。为了能够执行您的建议,您可能需要将方法添加到控制器,然后添加单独的路径:
Route::resource('products','ProductController');
Route::get('products/add', ['as' => 'products.add', 'uses' => 'ProductController@add']);