ログ日記

作業ログと日記とメモ

テンプレートにスコープ解決演算子が欲しい

例えばこんなの。

<?php

class ItemChangeConfirm
{
    public $oldItem;
    public $newItem;

    public $itemId;

    public function execute(DaoFactory $factory){
        $itemDao = $factory->get('item');
        $item = $itemDao->getVo($this->itemId);

        $this->oldItem = clone $item;

        // $item->itemValue = 'old value';
        if (!ItemChanger::change($item))
            return 'error';
        // $item->itemValue = 'new value'; などに変更されるものとする。

        $this->newItem = $item;
    }
}
<p>変更前のアイテム</p>

{begin:oldItem}
<ul>
    <li>名前 {itemName}</li>
    <li>コード {itemCode}</li>
    <li>値 {itemValue}</li>
</ul>
{end:}

<p>変更後のアイテム</p>

{begin:newItem}
<ul>
    <li>名前 {itemName}</li>
    <li>コード {itemCode}</li>
    <li>値 {itemValue}</li>
</ul>
{end:}

こういうことをしたい。




・・・って書いてたら現状で出来る解決方法を思い付いた。

<?php

class ItemChangeConfirm
{
    public $ITEMS;

    public $itemId;

    public function execute(DaoFactory $factory){
        $itemDao = $factory->get('item');
        $item = $itemDao->getVo($this->itemId);

        $ITEMS = array();
        $oldItem = clone $item;
        $oldItem->subject = '変更前のアイテム';
        $ITEMS[] = $oldItem;

        if (!ItemChanger::change($item))
            return 'error';

        $newItem = $item;
        $newItem->subject = '変更後のアイテム';
        $ITEMS[] = $newItem;

        $this->ITEMS = $ITEMS;
    }
}
{loop:ITEMS}
<p>{subject}</p>

<ul>
    <li>名前 {itemName}</li>
    <li>コード {itemCode}</li>
    <li>値 {itemValue}</li>
</ul>
{endloop:}

これで出来ちゃうや。