InvalidArgumentException路由未定义

时间:2017-10-12 08:00:29

标签: laravel

我有错误,如(1/1)InvalidArgumentException Route [home]未定义。每当我使用商店功能,但我很确定我使用重定向方法正确可能的错误,我想要的是一旦存储方法完成后重定向到家。

web.php

<?php


Route::get('/', function () {
    return view('main');
}); 

Route::get('/create', 'BuildingController@createBuilding');
Route::post('/store', 'BuildingController@store');
Route::post('home', 'BuildingController@getAllBuilding');

Building.php

 <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Building extends Model
{
    public $timestamps = false;

    protected $fillable = [
         'id',
         'building_name', 
         'building_information',
         'building_image'
    ];
}

BuildingController.php

<?php

namespace App\Http\Controllers;

use App\Building;
use Image;
use Illuminate\Http\Request;
use App\Repositories\Building\BuildingRepository;

class BuildingController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    private $building;

    public function __construct(BuildingRepository $building)
    {
        $this->building = $building;
    }

    public function createBuilding()
    {
       return view('building.create');
    }

    public function store(Request $request)
    {
       $this->validate($request, array(
           'building_name'=>'required',
           'building_information'=>'required',
           'building_image' => 'required'
       ));

            $image = $request->file('building_image');
            $filename  = time() . '.' . $image->getClientOriginalExtension();
            $location = public_path('images/' .$filename);
            Image::make($image)->resize(800,400)->save($location);

             $buildings = array('building_name' => $request->building_name,
                            'building_information' => $request->building_information,
                            'building_image' => $filename);

        $this->building->create($buildings);

        return redirect()->route('home');

    }

    public function getAllBuilding()
    {
        $buildings =  $this->building->getAll();
        return view('building.home')->with('buildings', $buildings);
    }

    public function getSpecificRecord()
    {
        $buildings = $this->building->getById(1);
        return view('building.show')->with('buildings', $buildings);
    }
}

EloquentBuilding.php

 <?php


namespace App\Repositories\Building;

use \App\Building;

class EloquentBuilding implements BuildingRepository
{   
    private $model;

    public function __construct(Building $model)
    {   
        $this->model = $model;
    }

    public function getById($id)
    {
        return $this->model->findOrFail($id);
    }

    public function getAll()
    {
        return $this->model->all();
    }

    public function create(array $attributes)
    {
        return $this->model->create($attributes);
    }

    public function update($id, array $attributes)
    {

    }

    public function delete($id)
    {

    }          
}

BuildingRepository.php

<?php


namespace App\Repositories\Building;


interface BuildingRepository
{
    public function getById($id);

    public function getAll();

    public function create(array $attributes); 

    public function update($id, array $attributes);

    public function delete($id);            
}

2 个答案:

答案 0 :(得分:3)

由于您正在使用route(),因此您需要name the route。另外,将其设为get

Route::get('home', 'BuildingController@getAllBuilding')->name('home');

或者:

Route::get('home', ['as' => 'home', 'uses' => 'BuildingController@getAllBuilding']);

答案 1 :(得分:2)

您正在尝试使用post的路由,将其替换为get,并使用名称为呼叫路由添加/指定name属性。

Route::get('home', 'BuildingController@getAllBuilding')->name('home');

OR

Route::get('home', ['as' => 'home', 'uses' => 'BuildingController@getAllBuilding']); 

以上两者都有相同的输出...