Laravel调用的方法与Route函数中指定的方法不同

I'm having troubles with something that I just can´t explain. I'm working with laravel and I just write a route for get method, no such a big deal, but for this route I'm calling a method called generatefile and laravel is calling my index method wich it doesn´t make sense. This is my code.

ReportController

<?php

  namespace App\Http\Controllers;

  use Illuminate\Http\Request;
  use App\ReportTypes;
  use App\Report;
  use App\Hardware;
  use App\Customer;
  use App\User;
  use App\ReportNotes;
  use DB;
  use PDF;

  use Illuminate\Support\Carbon;

  class ReportController extends Controller
   {
    public function index($type){

    $data = new ReportTypes;

    $datatype = $data->getData($type);

    $hm = $datatype->report_type_includes_hardware ? true : false;

    $customers = Customer::all();

    $users = User::all();

    $report = new Report;

    $reports = $report->getData($type);

    if($hm){

        $models = Hardware::all();

        return view('report/types/index',compact('datatype','hm','models','customers','users','reports'));

    }

    return view('report/types/index',compact('datatype','hm','reports','customers','users'));


}

public function generatefile(){

    $data = ['title' => 'Welcome to HDTuto.com'];

    $pdf = PDF::loadView('myPDF', $data);

    return $pdf->download('hdtuto.pdf');

}

public function details($type, $folio){

    $data = new ReportTypes;

    $datatype = $data->getData($type);

    $report_notes = new ReportNotes;

    $type_id = DB::table('report_types')->where('report_type_serie','=',$type)->get()->first();

    $report = DB::table('reports')->where([
        ['FK_report_type_id','=',$type_id->PK_report_type_id],
        ['report_folio','=',$folio]
    ])->first();



    $notes = $report_notes->getData($report->PK_report_id);

    return view('report/types/details',compact('datatype','notes','report'));

}

public function store(Request $request){

    $report = new Report;
    $data = new ReportTypes;

    $report->FK_report_type_id = $request->RPType;
    $report->report_folio = $data->nextFolio($request->RPType);
    $report->FK_customer_id = $request->RPCustomer;
    $report->FK_hardware_model_id = $request->RPHardware;
    $report->FK_creator_user_id = $request->RPCreator;
    $report->FK_responsable_user_id = $request->RPResp;
    $report->FK_assistant1_user_id = $request->RPAssist;
    $report->FK_report_state_id = 1;
    $report->report_issue = $request->RPIssue;
    $report->report_description_issue = $request->RPDescIssue;
    $report->report_created_at = Carbon::now();
    $report->report_attended_at = Carbon::now();
    $report->report_updated_at = Carbon::now();
    $report->report_finished_at = Carbon::now();

    $report->save();

    $data->incrementFolio($request->RPType);

    return redirect()->route('reports',$request->RPTypeSerie);

   }
}

My Route

Route::get('reports/getfile','ReportController@getfile')->name('report.generatefile');
Route::get('reports/{type}','ReportController@index')->name('reports');

And when I try to access this route, I get this:

enter image description here

I get the error in the index method, but I'm not calling it.

Can anyone please explain me why is this happening?

Put your route before to index route and try. You can to check this question: Laravel Route issues with Route order in web.php

First, check your route.php if there is no duplicate route URI w/ the same method Route::get('reports/getfile'... or route name ->name('report.generatefile').

It is possible that you have 2 duplicate routes and you are using the route which uses ReportController@index.

Second, getFile function doesn't seem to exist in your ReportController which you are using in your route:

Route::get('reports/getfile','ReportController@getfile')->name('report.generatefile');

You can try

php artisan passport:install --force