laravel 5.3中的Route Not found异常也尝试了资源路由和手动路由

时间:2017-01-07 08:25:26

标签: php laravel routes laravel-5.3

我创建了一个资源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,就像这样

  

http://localhost:8080/rms/public/brands.create

它也生成了

  

http://localhost:8080/rms/public/brand/create

但同样的问题仍然存在。 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();
}

}

3 个答案:

答案 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'); }

但是我建议你使用第一个,因为我们正在使用路由名称。如果你想更改网址,你不必担心这段代码。