28 |
laravelによるスキャフォールディング (6) |
DocController edit()の修正
app/Http/Controllers/DocController.php内のeditアクションの修正です。同じく前半がコントローラの修正、後半がビューの修正です。
標準ではコントローラのコードは、
public function edit($id)
{
$doc = $this->docRepository->find($id);
if (empty($doc)) {
Flash::error('Doc not found');
return redirect(route('docs.index'));
}
return view('docs.edit')->with('doc', $doc);
}
と生成されますが、これを次のように修正します。
public function edit($id)
{
$doc = $this->docRepository->find($id);
$categories = Category::all()->pluck('name','id');
if (empty($doc)) {
Flash::error('Doc not found');
return redirect(route('docs.index'));
}
return view('docs.edit', compact('doc', 'categories'));
}
'doc'と'categories'という2つの変数をedit1次ビューに渡します。実際の作業は2次ビューであるfieldが実行します。
DocController create()の修正
引き続きcreateアクションの修正を行います。editもcreateもビューは同じなので、併せて前半のコントローラの修正を行います。
標準ではコントローラのコードは
public function create()
{
return view('docs.create');
}
と生成されますが、これを次のように修正します。先に示したようにeditアクションとビューを兼用しているため、$idをダミーで渡します。
public function create()
{
$doc = null;
$categories = Category::all()->pluck('name','id');
return view('docs.create',compact('doc','categories'));
}
editアクションと同様、、'doc'と'categories'という2つの変数をcreate1次ビューに渡します。実際の作業は2次ビューであるfieldが実行します。