初歩的な質問で申し訳ございません。
恐らく、とても簡単な内容です。
前提・実現したいこと
Vue.js
Laravel
axios
jsファイルからaxiosでpushするデータに、ログインユーザーIDを設定したいです。
ただ、jsファイルでログインユーザーIDを取得するのは難しそうと判断しました。
そこで、axiosでpushするjsファイルではuser_id
を1と設定し、受け取ったcontrollerで、ユーザーIDをAuth::user()->id;
と設定することにしました。
やったこと
1.jsファイルで直接取得
JS
1// jsファイルに直接記述 2$http.get('api/user').then(response => { 3 console.log(response.body); 4}) 5// エラー:[Vue warn]: Error in v-on handler: "ReferenceError: $http is not defined"
2.JSファイルにユーザーIDを設定
JS
1let userId = Auth::user()->id; 2console.log(userId); 3// Unexpected token, expected ";"
3.controllerにsubmitされた配列に直接記述
public function store(ChargeRemarkRequest $request) $params = $request->all(); // ユーザーIDを直接登録する $params['user_id'] = Auth::user()->id; $chargeRemark = new ChargeRemark(); $chargeRemark->fill($request->all())->save(); return response()->json(['id' => $chargeRemark->id]); } // 何も変更なし
わからないこと
1. jsファイルでユーザーIDを取得することはできるのか
2. できない場合、コントローラーで上書きすることはできるのか
3. いずれも正しくない場合、どのようにして取得すれば良いのか
コード
1.axiosでpushするjsファイル
JS
1registerMemo(state, { infoId, content }) { 2 state.calendars[infoId.calendarId][infoId.columnStatus][infoId.lineId].memos[infoId.memberId] = { content: content }; 3 let timeType = 0; 4 switch (infoId.columnStatus) { 5 case 'amcolumns': 6 timeType = 1; 7 break; 8 case 'pmcolumns': 9 timeType = 2; 10 break; 11 case 'yetcolumns': 12 timeType = 0; 13 break; 14 }; 15 let params = { 16 user_id: 1, 17 charge_id: state.managerLists[infoId.memberId].id, 18 time_type: timeType, 19 work_on: state.calendars[infoId.calendarId].date.replaceAll('/', '-'), 20 remarks: content, 21 }; 22 let userId = Auth::user()->id 23 console.log(userId); 24 // メモ情報のIDがセットされていない場合は登録API、セットされている場合は更新APIを呼び出す 25 if (!state.remarkId) { 26 axios.post('/api/charge-remarks', params) 27 .then(result => { 28 console.log('register memo has succeeded!'); 29 // 返却されたIDをcalendarsの値へ返す 30 state.calendars[infoId.calendarId][infoId.columnStatus][infoId.lineId].memos[infoId.memberId] = { 31 remarkId: result.id, 32 content: content 33 }; 34 console.log(state.calendars[infoId.calendarId][infoId.columnStatus][infoId.lineId].memos[infoId.memberId]); 35 }) 36 .catch(result => { 37 console.log('error', result); 38 }); 39 } else { 40 axios 41 .put('/api/charge-remarks/' + state.remarkId, params) 42 .then(result => { 43 console.log('update memo has succeeded!'); 44 }) 45 .catch(result => { 46 console.log('error', result); 47 }); 48 } 49 Vue.set(state, 'refreshVal', state.refreshVal + 1); 50},
2.axiosでpushされた値を処理するcontrollerファイル
PHP
1public function store(ChargeRemarkRequest $request) 2 { 3 $chargeRemark = new ChargeRemark(); 4 $request->user_id = Auth::user()->id; 5 $chargeRemark->fill($request->all())->save(); 6 return response()->json(['id' => $chargeRemark->id]); 7 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/05 04:33