laravel URLにあわせてコントローラーに引数を渡したい

「/hoge_a」「/hoge_b」で、コントローラーに渡す引数を変えたい

作成日:2019-06-06, 更新日:2019-06-06

経緯

・表示するページは一緒だけどURLによって一部だけ内容を変更したい

基本

▼ルーティング

Route::prefix('XXX')->namespace('XXX')->group(function(){
  // URLが「〇〇〇/hoge」「〇〇〇/foo」など
  Route::get('〇〇〇/{code}', 'FooController@testAction');
  
  // URLが「〇〇〇/hoge_hoge」「〇〇〇/hoge_foo」など
  //Route::get('〇〇〇/hoge_{code}', 'FooController@testAction');
  
  // post、getできたとき
  //Route::match(['post', 'get'], '〇〇〇/{code}', 'FooController@testAction');
});

▼コントローラ

<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;

class FooController extends \App\Http\Controllers\Controller {
  public function testAction($code='') {
    処理
}

コントローラーを呼び出して引数をセットして呼び出す

▼ルーティング

Route::prefix('XXX')->namespace('XXX')->group(function(){
  Route::match(['post','get'], 'hoge', function(){
    // コントローラーのインスタンス化(?)してからメソッドを呼び出す
    $called = app()->make('\App\Http\Controllers\FooController');
    return $called->testAction(〇〇〇);
  });
});

▼コントローラ

上記同様