импорт листа Excel с помощью maatweb в Laravel 5.1

Пытаюсь научиться импортировать базовый лист 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

Решение

Маршруты действий должны быть определены следующим образом:

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']);

И тогда вам не нужно держать контроллеры и маршруты а также просмотров в синхронизации:

<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' => 'Поставщики',
...
];
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]