表題の通りなのですが、Smartyでオブジェクトのプロパティを配列の添え字に使用できません。
#実は私がやり方を知らないだけ、という可能性は多分にありますが。
どういうことかと言うと、
[smarty]
{foreach from=$list item=val}
{$hogeList[$val->id]->name|escape}
{/foreach}
[/smarty]
というようにオブジェクト($val)のプロパティ($val->id)を添え字に使用するとエラーが出てしまいます。
このような場合は
[smarty]
{foreach from=$list item=val}
{assign var=”id” value=$val->id}
{$hogeList[$id]->name|escape}
{/foreach}
[/smarty]
とすると、問題無く動作します。何かあったらAssignしてやれ、という感じで使っていますが、どうなのですかね。。
関連する記事:
- objectにキャストする
- foreachの罠に引っかからない
- ffmpeg-phpで動画のデータを取得しよう
- PHPフレームワークの「codeIgniter」がスゴすぎるらしい。
- PHP でサーバソケットプログラミング
Powered by MightyAdsense
ググったら、まったく同じ問題に当たっている、
こちらのページがヒットしました。
回避方法も、自分がやってるのとまったく同じでした。assignで。
もっと、ストレートな書き方があってもよさそうなんですけどね。。
こんにちは!>HY
しばらくして、解決方法を発見したので追記しました。
http://www.php-seed.net/blog/archives/44
オブジェクトを`(クォータ)で囲めばいいみたいです。
上記のコードなら
assign var=”id” value=`$val->id`
ですね。
問題が解決されましたでしょうか?
ちがうんじゃない?
{$hogeList[$val->id]}
HYさんも、元記事も、↑ができないって言ってるのでは?
解決方法と書かれた記事はちょっと的外れでは?