RouteCollection.php中的Laravel NotFoundHttpException

时间:2017-11-07 06:37:55

标签: laravel

是laravel的新手并且发现很难设计用于将CSV文件上传到MySQL的代码......我已经完成了以下编码......

控制器:

public function index()
{
    return view('items.items');
}

public function import(Request $request)
{
    if($request->file('imported-file'))
    {
        $path = $request->file('imported-file')->getRealPath();
        $data = Excel::load($path, function($reader) {})->get();

        if(!empty($data) && $data->count())
        {
            $data = $data->toArray();
            for($i=0;$i<count($data);$i++)
            {
                $dataImported[] = $data[$i];
            }
        }
        Inventory::insert($dataImported);
    }
    return back();
}

在视图中:

<form action="{{route('items.import')}}" method="post" enctype="multipart/form-data">
    <div class="col-md-6">
        {{csrf_field()}}
        <input type="file" name="imported-file"/>
    </div>
    <div class="col-md-6">
        <button class="btn btn-primary" type="submit">Import</button>
    </div>
</form>

在Routes.php中

  

路由:: get(&#39; items&#39;,&#39; ItemController @ index&#39;);

     

路由::帖子(&#39; items / import&#39;,[&#39;使用&#39; =&gt;&#39; ItemController @ import&#39;,&#39; as&#39;   =&GT; &#39; items.import&#39;]);

这在RouteCollection.php中给出了一个名为NotFoundHttpException的错误

我所能理解的是,我的代码中缺少某些方法或控制器,但无法弄清楚那是什么......任何人都可以帮助我在这里我很长时间都被困在这里。

4 个答案:

答案 0 :(得分:0)

首先尝试使用

Route::get('items/import',[ 'uses' => 'ItemController@import', 'as' => 'items.import'] );

如果访问了items / import,那么

Route::any('items/import',[ 'uses' => 'ItemController@import', 'as' => 'items.import'] );

除此之外,你可能想要使用:

<form action="/items/import" method="post"并保留帖子

而不是

<form action="{{route('items.import')}}" method="post"

答案 1 :(得分:0)

您需要定义简单的路线

Route::any('items/import',ItemController@import);

并确保您必须在控制器中添加依赖项。它在那里?像:

use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;

答案 2 :(得分:0)

您应该尝试使用以下形式:

<form action="{{ url('items/import') }}" method="POST" enctype="multipart/form-data">

您的导入功能如下:

use Redirect;

public function import(Request $request)
    {
      if($request->file('imported-file'))
      {
                $path = $request->file('imported-file')->getRealPath();
                $data = Excel::load($path, function($reader) {
            })->get();

            if(!empty($data) && $data->count())
      {
        $data = $data->toArray();
        for($i=0;$i<count($data);$i++)
        {
          $dataImported[] = $data[$i];
        }
            }
      Inventory::insert($dataImported);
        }
        return redirect()->route('items.import');
  }

更新回答

    Route::get('items', 'ItemController@index')->name('items');

    Route::post('items/import', 'ItemController@import')->name('items.import');

public function import(Request $request)
        {
          if($request->file('imported-file'))
          {
                    $path = $request->file('imported-file')->getRealPath();
                    $data = Excel::load($path, function($reader) {
                })->get();

                if(!empty($data) && $data->count())
          {
            $data = $data->toArray();
            for($i=0;$i<count($data);$i++)
            {
              $dataImported[] = $data[$i];
            }
                }
          Inventory::insert($dataImported);
            }
            return redirect()->route('items.import');
      }

答案 3 :(得分:0)

运行这些命令,然后刷新页面

1。php artisan route:clear

2。php artisan cache:clear

3。composer dumpautoload

,最后一个是

4。composer update