Angular7を使用して動的メニューとサブメニューを作成し、Laravelからエンドポイントを取得したいと思います。
2つのテーブルに同時に保存し、main_menuテーブルのIDをsub_menuに渡します。
データがメニューテーブルに保存されると、メニューテーブルのIDが渡され、サブメニューテーブルのmenu_idに渡されます。
Laravel:メニューコントローラー
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'descriptions' => 'required',
]);
$mainmenu = Mainenu::create($request->all());
return response()->json([
'message' => 'Great success! New Menu Item created',
'mainmenu' => $mainmenu
]);
}
Laravel:サブメニューコントローラー
public function store(Request $request)
{
$request->validate([
'menu_id' => 'required',
'parent_id' => 'required'
]);
$submenu = Submenu::create($request->all());
return response()->json([
'message' => 'Great success! New Menu Item created',
'submenu' => $submenu
]);
}
角度:モデル
export class Menu {
id: number = '';
name: string = '';
description : string = '';
}
export class Submenu {
id: number = '';
menu_id: number = '';
parent_id : number = '';
}
Service.ts
addMenu (mainmenu): Observable<Mainmenu> {
return this.http.post<Mainmenu>(apiUrl, mainmenu, httpOptions).pipe(
tap((mainmenu: Mainmenu) => console.log(`added mainmenu w/ id=${mainmenu._id}`)),
catchError(this.handleError<Mainmenu>('addMenu'))
);
}
コードをさらに進める方法がわかりません
2つのテーブルに同時に保存し、main_menuテーブルのIDをmenu_idとしてsub_menuに渡したいと思います。
オブザーバーを使用する必要があります
まず、このようにリクエストを受け取ることができます
id: number = '';
name: string = '';
description : string = '';
parent_id: number = ''; //If it needs to be a submenu
メニューコントローラの場合:
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'descriptions' => 'required',
]);
$mainmenu = Mainmenu::create($request->except(['parent_id']));
return response()->json([
'message' => 'Great success! New Menu Item created',
'mainmenu' => $mainmenu
]);
}
上のオブザーバー:
namespace App\Observers;
use App\Mainmenu;
use App\Submenu;
class MainmenuObserver
{
/**
* Handle the Mainmenu "created" event.
*
* @param \App\Mainmenu $mainmenu
* @return void
*/
public function created(Mainmenu $mainmenu)
{
$submenu = Submenu::create([
'menu_id' => $mainmenu->id,
'parent_id' => request()->parent_id
]);
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加