前提・実現したいこと
laravelで非同期通信を主にしたWebアプリを作成しています。
根本的に仕組みを理解していないのかもしれませんが、
非同期通信でメソッドを呼び出した時、そのメソッドの所属するクラスのコンストラクタは呼ばれないのでしょうか?
発生している問題・エラーメッセージ
初期表示でindex()を呼びだされる。←この時点ではコンストラクタが動く。
↓
index画面表示。
↓
index画面から非同期でメソッドを呼び出す。←この時にクラスのコンストラクタは実行される?
サーバー側クラス laravel
class 親クラスController { private $atai; public function __construct(){ $this->atai = 'hoge'; } public function index(){ return view('インデックス画面', $response); } public function メソッド(){ // 'hoge'が読み取れるかと思いきや、空。 print_r($this->atai); dd('exit'); 省略 return response()->json($res, 200); } } class 子クラスController extends 親クラスController { 省略 }
ルート.php
Route::post('/urlです/メソッド', '子クラスController@メソッド');
フロント側 vue.js
省略 created: function () { js側メソッド(); }, 省略 methods: { js側メソッド: function () { const url = '/urlです/メソッド'; this.$_loading(); axios.post(url, { _method: 'POST', 何かパラメータ: 値, }) .then((response) => { }) .catch((error) => { }); }, }, 省略
フロントはvue.jsを使用しています。
createdでjs側メソッドを呼び、そこからサーバー側を呼び出しています。
ルート.phpでは、子クラスController@メソッド()で呼び出していますが、子クラスにメソッド()の実装は無く、
親クラスにあります。
親クラスのメソッド()が実行される前に、親クラスのコンストラクタが実行され、←そもそもこの認識が間違っている?
メソッド()内でataiが読み取れると思っていたのですが、
空です。
ちなみに、タイミングの問題かと思い、created以外の場所にjs側メソッド()を置いて呼び出してみましたが、
ダメでした。
上記ができないとなると、どのように値を保持すればよいのでしょうか?
セッションに格納?
教えて頂けると幸いです。
回答1件
あなたの回答
tips
プレビュー