Smartyでオブジェクトを操る時の問題解決>プロパティを配列の添え字に使用できない?

表題の通りなのですが、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してやれ、という感じで使っていますが、どうなのですかね。。

関連する記事:

Powered by

  1. ググったら、まったく同じ問題に当たっている、
    こちらのページがヒットしました。
    回避方法も、自分がやってるのとまったく同じでした。assignで。

    もっと、ストレートな書き方があってもよさそうなんですけどね。。

  2. こんにちは!>HY

    しばらくして、解決方法を発見したので追記しました。

    http://www.php-seed.net/blog/archives/44

    オブジェクトを`(クォータ)で囲めばいいみたいです。
    上記のコードなら

    assign var=”id” value=`$val->id`

    ですね。
    問題が解決されましたでしょうか?

  3. ちがうんじゃない?

    {$hogeList[$val->id]}

    HYさんも、元記事も、↑ができないって言ってるのでは?
    解決方法と書かれた記事はちょっと的外れでは?

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">