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

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

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

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Q&A

解決済

1回答

1654閲覧

smarty phpのstatic methondから配列を取得時のデータの取り出し方

退会済みユーザー

退会済みユーザー

総合スコア0

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

0グッド

1クリップ

投稿2018/01/17 11:15

編集2018/05/11 13:38

質問です。
smartyからphpのstaticのメソッドを呼び出し、そのメソッドの戻り値が連想配列だった場合の、
データの取り出し方を教えていただけないでしょうか。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Smartyに限らず通常の生PHPでもできないように思います。
生PHPでできないことはSmartyでもできません。
引数を渡してあとはメソッド側で欲しい情報を返してあげては?

※未検証。イメージだけもってもらえれば

php

1clasee Foo 2{ 3 public static function test($arg1,$arg2) { 4 $data[$arg1][$arg2] = 'aaaa'; 5 return $data[$arg1][$arg2] ; 6 } 7} 8

Smarty

{Foo::test('test1','test2')}

もし、Smarty側で配列で受け取ってループで取り出す等したいのであれば
ご提示の実験3のように一度変数で受け取るしかないように思います。

要件・仕様次第ですね。
私個人の意見としては、あまりView側で処理を書きたくないのでController,Model側に
欲しい情報のキーを引数で渡してある程度データを形作ったものを返してView側は表示のみに終始させます。

投稿2018/01/18 01:41

m.ts10806

総合スコア80765

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

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

退会済みユーザー

退会済みユーザー

2018/01/19 00:04 編集

他にうまい手段があればご教示頂きたく思います。
m.ts10806

2018/01/18 06:47

非推奨ということは「良くない」のではなく「やっちゃダメ」という認識です。よく「自己責任においてならやっていい」みたいな解釈をされますが、そうではなく、何かしらの理由や仕様がありできなくなっています。 今回も何かしらの理由や仕様があり、今回実験で取得できなかったやり方ができないようになっています。 今回のケースはおおよそ、実験3で提示されたやり方か、私の提示したやり方か、どちらかになると思いますよ。(もちろん、もっといいやり方がないか調べるか、そういう回答がでるまで待つのもありです)
退会済みユーザー

退会済みユーザー

2018/01/19 00:03 編集

ご指摘ありがとうございます。
m.ts10806

2018/01/19 01:08

指摘が入っているように質問内容を抹消するのは禁止行為です。 既に回答が入っていたり解決済みにした質問の編集は慎重にしてください。 本件について、色々と事情があるのは分かりますが、折角の問題提起なのでそれ自体をなかったことにするのは非常に勿体無いと思いますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問