Форма не отображается из-за проблемы маршрутизации в параметре действия - PullRequest
1 голос
/ 28 апреля 2020

Я работаю над модулем импорта Excel как часть CRM для моей компании. Я хочу импортировать лист Excel. Я использую пакет Excel Maatwebsite, версия 3.1. Я хочу показать форму, а затем загрузить лист. Однако я даже не могу добраться до этой точки. Я уже определил, что проблема находится в форме маршрута, но я не уверен, что именно мне не хватает.

Маршруты, которые я использую для отображения страницы (индекс работает нормально)

Форма, используемая для импортирования листа Excel

Навигационная ссылка в меню

DataController (из которого я пытаюсь вызвать метод импорта)

Если вы знаете, что может быть не так, пожалуйста, скажите, это действительно расстраивает!

Код маршрута:

Route::get('importeren', 'Datacontroller@index');

Route::post('import', 'Datacontroller@import');
<div class="container-fluid">
    <form action="import" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="import_file">
    <br>
    <input type="submit" value="Import">
    </form>
</div>

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Imports\DataImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;

class DataController extends Controller
{
    public function index(){
        return view('importeren');
    }

    public function import(Request $request){

        Excel::import(new DataImport(), $request->file('import_file'));

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

Ответы [ 3 ]

0 голосов
/ 28 апреля 2020

Вы можете дать имя вашему маршруту :

Route::post('import', 'Datacontroller@import')->name('import');

и оставить действие формы таким же, как с route () помощником :

<div class="container-fluid">
    <form action="{{ route('import') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="import_file">
    <br>
    <input type="submit" value="Import">
    </form>
</div>

Вы также можете использовать помощник url () и оставить маршрут без имени, но я настоятельно рекомендую опцию дать вашему маршруту имя.

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

Обратите внимание, что при возврате контроллера вы также используете перенаправление на именованный маршрут , поэтому я предлагаю вам дать этому маршруту имя и использовать это имя в перенаправлении. Например:

Route::get('home', 'SomeController@someMethod')->name('home');

и

return redirect()->route('home');
0 голосов
/ 28 апреля 2020

Вы должны использовать route () только с именем маршрута, используйте вместо этого: return redirect('/home');

0 голосов
/ 28 апреля 2020

Не используйте метод route (), потому что вы не определяете ни одно имя маршрута, используйте что-то вроде: form action = "/ import" method = "POST" enctype = "multipart / formdata">

...