他のControllerで使用されているインスタンスを、別のControllerへ受け渡して使うことができないか試みた。
具体的には、名前空間に別のControllerを記載し、メソッドの引数として指定しようとした。
↓以下のようなコードを書いてみた。 ※失敗例なので参考にしても動きません
ManualController
//呼び出される側のController
public function store(Request $request)
{
$inputs=$request->validate([
'title'=>'required|max:30',
]);
$manual=new Manual();
$manual->title=$request->title;
$manual->user_id=auth()->user()->id;
$manual->save();
return redirect()->route('step.create');
}
public function getManual()
{
return $this->manual;
}
StepController
//呼び出す側のController
public function store(Request $request)
{
$inputs=$request->validate([
'body'=>'required|max:500',
'image'=>'image|max:1024'
]);
global $number;
$step=new Step();
$step->id=$number;
$step->body=$request->body;
$called = app()->make('App\Http\Controllers\ManualController');
$manual = $called->getManual();
$step->manual_id=$manual->id;
if (request('image')){
$original = request()->file('image')->getClientOriginalName();
$name = date('Ymd_His').'_'.$original;
request()->file('image')->move('storage/images', $name);
$step->image = $name;
}
$step->save();
$number++;
return view('step.create', [
'step_num' => $number,
])->with('message', 'このステップを保存しました');
}
結果的にうまくいかず。
代替案として、URLにモデルのIDを載せることで、URLから情報を取得する方法を採用した。
そちらに関しては、また別途記事を作成します。