1

ビューに変数を割り当てる一貫した動作を得るのに問題があります。例えば:

コントローラーで:

$this->view->media = Media::findFirst(['groupId=0', 'order' => 'RAND()', 'limit' => 1]);

ビューで:

        {% if media is defined %}
        <div class="thumbnail">
            <img src="{{ static_url('img/media/thumbs/' ~ media.name) }}" class="img-round">
            <div class="caption">
                <h3>{{ media.title }}</h3>
                <p>{{ media.description }}</p>
            </div>
        </div>
        {% endif %}

次のように解析されます。

        <?php if (isset($media)) { ?>
        <div class="thumbnail">
            <img src="<?php echo $this->url->getStatic('img/media/thumbs/' . $this->media->name); ?>" class="img-round">
            <div class="caption">
                <h3><?php echo $this->media->title; ?></h3>
                <p><?php echo $this->media->description; ?></p>
            </div>
        </div>
        <?php } ?>

問題は、テンプレートの解析済みバージョンの場合、$this を介して $media にアクセスできないため、isset($media) はパスしますが、$this->media への参照は何も返さないことです。

$media を強制的にスコープ内でローカルにする方法はありますか?

4

1 に答える 1