在 Laravel excel 中导入时路由未定义

问题描述

我正在尝试使用 Laravel excelimport 功能,但即使路线已注册,它也始终返回 Route: undefined error。请参阅我的代码,以及下面的详细信息。

web.PHP

Route::get('admin/doctors/bulk-upload/data',[
    'middleware' => ['auth','auth.admin'],'as' => 'admin.doctors.bulk-upload.data','uses' => 'Admin\DoctorUploadController@create'
]);

Route::post('admin/doctors/bulk-data/upload',[
    'as' => 'admin.doctors.bulk-data.upload','uses' => 'Admin\DoctorUploadController@upload'
]);

UsersImport.PHP

namespace App\Imports;

use App\User;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Concerns\WithheadingRow;

class UsersImport implements ToModel,WithheadingRow//,WithValidation
{

    public function model(array $row)
    {

        $user = User::create([
            'name' => $row['first_name'] . ' ' . $row['last_name'],'email' => $row['email'],'password' => bcrypt($row['email']),'role' => 'doctor','status' => 1
        ]);

        return $user;
    }

    public function headingRow()
    {
        return 1;
    }

}

控制器

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

class DoctorUploadController extends Controller
{

    public function create()
    {
        return view('admin.doctors.bulk-upload');
    }

    public function upload()
    {
        $this->validate(request(),[
            'excel' => ['required','file','mimes:xlsx']
        ]);
        
        Excel::import(new UsersImport,request()->file('excel'));

        return redirect()->route('doctors.bulk-upload.data')->with('message','Data has been uploaded!');
    }

}

查看

<form action="{{ route('admin.doctors.bulk-data.upload') }}" method="post" enctype="multipart/form-data" id="formUpload">
        {{ csrf_field() }}

    <div class="mb-3">
        <input type="file" class="pointer" name="excel" accept=".xlsx">
    </div>

    <button class="btn btn-primary btn-block">
        <span class="fas fa-file-upload"></span> Upload
    </button>
</form>

错误

未定义路由 [doctors.bulk-upload.data]。

解决方法

您在将路由 doctors.bulk-upload.data 重定向到 admin.doctors.bulk-upload.data 时出错

return redirect()->route('admin.doctors.bulk-upload.data')->with('message','Data has been uploaded!');