我创建了一个资源BrandController
,然后创建了它的路由。问题是有些路线正在运行,有些则没有。例如,create
路由不起作用。我也尝试过手动声明路线,但问题是一样的。我跑了像
php artisan route:clear
php artisan cache:clear
以下是路线
Route::group(['namespace' => 'AppControllers'], function () {
/*
|--------------------------------------------------------------------------
| All routes of BrandController are defined here
|--------------------------------------------------------------------------
|
*/
Route::get('brands', 'BrandController@index')->name('brand.index');
Route::get('brand/create', 'BrandController@create')->name('brand.create');
Route::get('brand/edit/{id}', 'BrandController@edit')->name('brand.edit');
Route::delete('brand/delete/{id}', 'BrandController@destroy')->name('brand.destroy');
Route::post('brand/store', 'BrandController@store')->name('brand.store');
Route::post('brand/update/{id}', 'BrandController@update')->name('brand.update');
// Here is resource route
Route::resource('brands', 'BrandController');
});
我在这里创建了一个简单的a
标记:
<a href="{{route('brand.create')}}">Add New</a>
每当我点击此链接时,它都会将/
转换为dot
,就像这样
它也生成了
但同样的问题仍然存在。 RouteCollection中的NotFoundHttpException
控制器代码:
<?php
namespace App\Http\Controllers\AppControllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Brand;
class BrandController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//dd('jgh');
//$brands = brand::all();
return view('brands.index');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return redirect('brands.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(BrandRequest $request)
{
$input = $request->all();
$storeBrand = new Brand();
$storeBrand->create($input);
//return redirect->()->back();
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$editBrand = Brand::findOrFail($id);
return view('brands.edit',compact('editBrand'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(BrandRequest $request, $id)
{
$updateBrand = Brand::findOrFail($id);
$input = $request->all();
$updateBrand->update($input);
return redirect()->back();
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$deleteBrand = Brand::findOrFail($id);
$deleteBrand->delete();
return redirect()->back();
}
}
答案 0 :(得分:1)
更改您的create
方法,如下所示
public function create()
{
return redirect('brands/create');
}
.
符号在redirect
方法中无效...
答案 1 :(得分:0)
制作像这样的资源路线
Route::resource('brand', 'BrandController', [
'names' => [
'index'=>'brand.list',
'create'=>'brand.create',
'store'=>'brand.store',
'update'=>'brand.update',
'edit'=>'brand.edit',
'show'=>'brand.show',
'destroy'=>'brand.remove',
]
]);
答案 2 :(得分:0)
你可以使用:
public function create()
{
return redirect()->route('brands.create');
}
要么
public function create()
{
return redirect('brands/create');
}
但是我建议你使用第一个,因为我们正在使用路由名称。如果你想更改网址,你不必担心这段代码。