使用maatweb将Excel工作表导入Laravel 5.1

时间:2016-02-17 09:13:35

标签: php mysql excel laravel-5.1 maatwebsite-excel

我正在尝试学习如何将基本Excel工作表导入laravel 5.1

vname        Vservice        vphone                 vmobile
test name    test  service   test number 123232     test  mobile 12344

我已经完成了以下功能

public function ImportVlist()
{
    Excel::load('/import.xlsx', function($reader)
    {
        $results = $reader->get();
        foreach ($results as $key => $value) {
            foreach ($value as $key => $value1) {
                Vlist::create([
                    'vname'=>$value1->vname,
                    'vservice' => $value1->vservice,
                    'vphone' => $value1->vphone,
                    'vmobile' => $value1->vmobile
                ]);
            }
        }
    })->get();
}

我已经做了一条路线

Route::get('/vlist/import' , 'VlistsController@ImportVlist');   

并且在索引中我做了以下链接

<li><a href="{{ action('VlistsController@ImportVlist') }}"> <span>Import Suppliers </span></a></li>

但是当我点击我收到excel旁边没有找到的页面时没有导入到mysql db

1 个答案:

答案 0 :(得分:0)

行动路线应定义如下:

Route::get('/vlist/import', array('as' => 'vlist.import', 'uses' => 'VlistsController@ImportVlist'));

此外,您可以使用controller()帮助程序:

Route::controller('vlist', 'VlistsController', ['getImportVlist' => 'vlist.import']);

然后,具有http方法前缀的控制器中的所有方法都将绑定到以下路由:

public function getImportVlist()
{
    Excel::load('/import.xlsx', function($reader)
    {
        ...
    }
}

可以通过路径名称在视图中引用:

<li><a href="{{ route('vlist.import') }}"> <span>Import Suppliers </span></a></li>

但我个人认为纯routes

Route::get('/vlist/import', ['uses' => 'VlistsController@ImportVlist', 'as' => 'vlist.import']);

然后您无需在synk中保留控制器并路由视图:

<li><a href="{{ route('vlist.import') }}"> <span>Import Suppliers </span></a></li>

优点:

1)路由名称更有意义。

2)重命名控制器方法只需要在routes.php中修复。

3)本地化/自定义路径链接/标题/面包屑变得更加容易:

 <li><a href="{{ route('vlist.import') }}"> <span>@lang('vlist.import')</span></a></li>

<强> vlist.en.php

<?php
    return [
        ...
        'import' => 'Import Suppliers',
        ...
    ];

<强> vlist.ru.php

<?php
    return [
        ...
        'import' => 'Поставщики',
        ...
    ];