jsファイル内で、config設定値の取得

1088 views
Skip to first unread message

Keisuke Yamashita

unread,
Jan 13, 2016, 3:26:32 AM1/13/16
to fuelphp.jp
いつもお世話になっております。山下です。

現在、1.7.3を使用して開発を行っております。
publicフォルダ内のjavaScriptファイルで、Configの設定を取得したいのですが、うまくいまずでして、、、

javaScriptファイルを
単純に文字列として読み込み、その文字列にConfigの設定値を追加して、Asset:jsの引数に与えViewファイルで呼び出す、
といった事をやってみたりしているのですが、他にも何か方法がございましたら、アドバイス教えていただけますと幸いです。
※テンプレートは、Twigを使用しておりますので、上記のような処理をTwig拡張で書いたりする方法もあるのかなと考えております。

※実現したい事としましては、タイマーのカウントダウン秒数(30秒等)をconfig.phpに書いておいて、jsファイル側で使用するといった事になります。

kit.t

unread,
Jan 13, 2016, 6:22:44 AM1/13/16
to fuelphp.jp
kittです。

動的なjsファイルの場合もControllerとViewで同様に扱うことができます。

ディフォルトでは実体のファイルがない場合にはRewriteされるとなっていますので、
js/config.jsにアクセスした場合は、config.jsが存在しなければjs/configと解釈され、Controller_Js::action_configが呼ばれます。

なお、実体ファイルを置かない都合上、Assetクラスからは見つけられず、Uriクラスなどで処理します。


また、Twig拡張については2013年のAdvent Calendarに記事がありましたので参考になりますでしょうか。
JavaScript側にPHP変数を簡単にまるごと渡す方法 #FuelPHPAdvent2013

2016年1月13日水曜日 17時26分32秒 UTC+9 Keisuke Yamashita:

KOYAMA Tetsuji

unread,
Jan 13, 2016, 6:39:52 AM1/13/16
to fuelp...@googlegroups.com
小山です。

2016-01-13 20:22 GMT+09:00 kit.t <yossh...@gmail.com>:
> kittです。

> また、Twig拡張については2013年のAdvent Calendarに記事がありましたので参考になりますでしょうか。
> JavaScript側にPHP変数を簡単にまるごと渡す方法 #FuelPHPAdvent2013
> http://koyhogetech.hatenablog.com/entry/20131206/twig_databind

おっと、ご紹介ありがとうございます。上記のブログ記事を
書いた者です。

.js に twig で値を組み込んで動的に生成するのは自分の好みでは
ないので、この例では吐き出す HTML に値を埋め込んでおき、JS
からそれを取得するという方法をとっています。

他にも、指定された config の値を JSON で返すアクションを
コントローラに用意して、それを Ajax で js から呼び出しすなんて
方法も思いつきます。js 側の処理で大きめの初期データが必要な
場合はよくやります。


--
小山哲志
koy...@hoge.org

Keisuke Yamashita

unread,
Jan 13, 2016, 8:07:02 PM1/13/16
to fuelp...@googlegroups.com
kittさん、小山さん

返信、参考URLありがとうございます。
Twigの拡張実装、参考になりました。


>他にも、指定された config の値を JSON で返すアクションを
>コントローラに用意して、それを Ajax で js から呼び出しすなんて
>方法も思いつきます。js 側の処理で大きめの初期データが必要な
>場合はよくやります。

この方法もたしかにいいですね。(WebAPI的なものをこしらえてもいいかもしれないです)
ちなみにこの方法で、設定初期値のAjaxの呼び出しに失敗した場合は、
どんな方法でエラー対応を行っていますか?
もし可能でしたら、参考程度に教えていただけますと幸いです。





2016年1月13日 20:39 KOYAMA Tetsuji <koy...@hoge.org>:


--
    小山哲志
    koy...@hoge.org

--
このメールは Google グループのグループ「fuelphp.jp」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには fuelphp_jp+...@googlegroups.com にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。

KOYAMA Tetsuji

unread,
Jan 14, 2016, 12:48:12 AM1/14/16
to fuelp...@googlegroups.com
小山です。

2016-01-14 10:07 GMT+09:00 Keisuke Yamashita <mspe...@gmail.com>:
> ちなみにこの方法で、設定初期値のAjaxの呼び出しに失敗した場合は、
> どんな方法でエラー対応を行っていますか?

その Web アプリの性格や、サーバの負荷状態、取得する値の重要性に依るのでは
ないでしょうか。

考えられるだけでも以下があります。

* JS 側でデフォルト値を持てる程度であれば、それを用いてそのまま動作続行。
* サーバ負荷により一時的に取得できないと想定できる場合はリトライ。
* Ajax 呼び出しでエラーになるということは、その後もまともに動作しない可能性が
高いので、操作続行不可的なエラーメッセージをダイアログで表示してそこでストップ。

何にせよ、決まった正解というものはないと思います。

--
小山哲志
koy...@hoge.org

Keisuke Yamashita

unread,
Jan 14, 2016, 7:01:22 AM1/14/16
to fuelp...@googlegroups.com
小山さん

ご返信ありがとうございます。山下です。

仰るとおり、Ajaxのエラーについては考慮する必要がありそうでしたので、
対応コストを考慮して、今回はTwigの拡張で対応を行おうと考えております。

いろいろとご意見ありがとうございます!
勉強になりました。


2016年1月14日 14:48 KOYAMA Tetsuji <koy...@hoge.org>:

--
    小山哲志
    koy...@hoge.org

Reply all
Reply to author
Forward
0 new messages