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

时间:2018-10-20 00:44:33

标签: php laravel

我遇到一些我无法解释的问题。我正在与laravel合作,我只是为get方法编写了一条路由,没什么大不了的,但是对于这条路由,我正在调用名为 generatefile 的方法,而laravel在调用我的 index 方法没有任何意义。这是我的代码。

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

   }
}

我的路线

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

当我尝试访问此路由时,我得到了:

enter image description here

我在index方法中遇到了错误,但是我没有调用它。

任何人都可以解释一下为什么会这样吗?

3 个答案:

答案 0 :(得分:0)

在将路线编入索引之前尝试放置您的路线。 您可以检查以下问题:Laravel Route issues with Route order in web.php

答案 1 :(得分:0)

首先,检查您的route.php是否没有使用相同方法Route::get('reports/getfile'...或路由名称->name('report.generatefile')的重复路由URI。

可能有两条重复的路线,而您正在使用的是使用ReportController@index的路线。

第二,您在路由中使用的getFile中似乎不存在ReportController功能:

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

答案 2 :(得分:0)

您可以尝试

php artisan passport:install --force