質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

6275閲覧

ReactでPHPの変数を受け取りたい

alberorana

総合スコア52

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/07/20 00:54

前提・実現したいこと

フロントエンド:React.js
サーバーサイド:codeigniter
APIサーバー:Laravel
のWebアプリでログイン状態をフロントで表現したいです。
システムの要件上、ちょっと変な構成ですが、React.jsはAPIサーバーからデータを取得します。
また、Webアプリの一部をReact.jsに置き換えていますので、ログイン画面はCodeigniterで作られております。

流れとしては
0. ログイン(Codeigniterで認証)
0. セッションにユーザーIDを保管
0. (ここを質問したいです)React.jsから、ユーザー認識できる何かを引数に持ちAPIにアクセス
0. APIサーバーでapi_tokenを発行、return
0. APIサーバーでapi_tokunをヘッダーに付与するとデータ取得できる

という流れを考えていますが、Codeigniterで認証したユーザーデータをReact.jsに渡す事ができません。
何かいい方法をご存知でしたら教えていただけると幸いです。

発生している問題・エラーメッセージ

'api_token' is not defined. (no-undef)

該当のソースコード

codeigniter側でjavascriptのグローバル変数に代入しようとしました。

<script> api_token = <?php echo $this->session->userdata("user_logged_in_id") ; ?>; </script> </head> <body> <noscript>You need to enable JavaScript to run this app.</noscript>  <div id="movies"></div> <script type="text/javascript" src="/build/movie/static/js/movie.js"></script> </body>

試したこと

上記のようにcodeigniter側でjavascriptのグローバル変数に代入しようとしました。
また、JSX内に直接phpのコードで代入する方法も難しいようでした。

補足情報(FW/ツールのバージョンなど)

Codeigniter:3.03
React.js: 1.6.1
Laravel: 5.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Ajaxで取りにいっては。

投稿2018/07/20 01:05

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

windowに入れてもだめでしょうか?

window.api_token = <?php echo $this->session->userdata("user_logged_in_id") ; ?>;

投稿2018/07/20 03:58

HiguchiKeita

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

alberorana

2018/07/20 04:06

ありがとうございます!無事取得できました。 グローバル変数で宣言したつもりだったのですが、windowをつけないとグローバル変数にならないのでしょうか?
HiguchiKeita

2018/07/20 04:30

上記は厳密にはグローバルじゃなくて、`window`オブジェクトの中に`api_token`というメンバを追加している形になります。 `window`つけない(修正前の状態)がグローバルであっていると思うのですが、Reactはあまり詳しくないのでなぜNGかわかりません。 React使っているならきっとwebpackとかbabelとか使われていると思いますが、その辺の影響もあるのではないでしょうか。 詳しく知りたいならコンパイル後のjsをデバックしてみるのをおすすめします。
alberorana

2018/07/20 04:52

>詳しく知りたいならコンパイル後のjsをデバックしてみるのをおすすめします。 たしかにそれで純粋なjavascriptが見られますね。ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問