我正在尝试学习如何将基本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
答案 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' => 'Поставщики',
...
];