1

所以我有这个功能,它将被用作 1 作为工匠命令或 2 作为用户可以使用的链接。

这是功能:

public function saveAll($whatLocation)
    {
      $userSaved = $this->saveUsersData();
      $componentSaved = $this->saveComponentsData();
      $issueSaved = $this->saveIssuesData();
      $timelogSaved = $this->saveTimelogsData();
      if($userSaved === 1 && $componentSaved === 1 && $timelogSaved === 1)
      {
        $this->allSaved = 1;
      }
      if($whatLocation != "artisanCommand")
      {
        return redirect()->back();
      }
      else
      {
        return $this->allSaved;
      }

    }

这个想法是,如果它来自我创建的工匠控制台命令,我会传递“artisanCommand”,但如果它来自路由,它会拉取我的 api 数据并重定向到上一页。

这是问题所在:

在网络路由文件中,我现在不能调用具有参数的函数?

Route::get('/pull-and-save-api-data', [App\Classes\SaveApiData::class, 'saveAll'])->name('pull-and-save-api-data');

如果函数上没有参数,这可以工作,但现在有参数就不行了?

我试过了:

Route::get('/pull-and-save-api-data', [App\Classes\SaveApiData::class, 'saveAll("notcommand")'])->name('pull-and-save-api-data');

Route::get('/pull-and-save-api-data/{notcommand}', [App\Classes\SaveApiData::class, 'saveAll'])->name('pull-and-save-api-data');

既不工作?

4

1 回答 1

3

How about you just make a default argument for the function since you don't have a value to pass to it from the route?

public function saveAll($whatLocation = null)

I wouldn't be calling your method directly from a route like that; have the route go to a Controller and have that Controller interact with the class/lib you need.

If you really had to have a value passed into it from the route you can set a default value:

Route::get('/pull-and-save-api-data', [App\Classes\SaveApiData::class, 'saveAll'])
    ->name('pull-and-save-api-data')
    ->defaults('whatLocation', 'notArtisan');
于 2019-12-30T20:05:08.640 回答