0

質問

私が持っていると言う

{php}
    function hello(){
{/php}
    <div class="hello">{$smarty.foreach.panellist.iteration}</div>
{php}
    }
{/php}

次に、以下に呼び出します。

{foreach from=$channelObj->get_panellist_primary('','','pan_ptyid,pan_label1,pan_label2') item=panelObj name=panellist}
        {php}hello(){/php}
{/foreach}

次のエラーが表示されます。

PHP Fatal error: Using $this when not in object context in /var/www.app1/theURL/otherthings/channel.tpl.php on line 197

なぜこれが機能しないのですか?できればパラメータを渡さずに、関数内からこの foreach の反復にアクセスするにはどうすればよいですか?

詳細

{php}はあなたが私に非推奨だと言うことを知っているので...私がそれを使用している理由は、本当に複雑なテンプレートを作成するように求められているためです。これまで smarty を使用したことがありません。締め切りが迫っていて、もう遅いので、smarty の正しい方法論を学ぶことができません。このコードを管理する方法を知る唯一の方法は、通常の PHP を使用することですが、上司は、すべてを smarty で作成すると主張しています... PHP や Javascript は許可されていません。

ありがとう!

4

2 に答える 2

1

これはひどいコーディング スタイルです。急いでいるので、そのようなコードを使用するのは解決策ではありません。そして、テクノロジーをまったく知らない場合は、これにお金をかけるべきではありません。

Smarty で使用できます。

{foreach from=$x item=panelObj name=panellist}
    {assign var="iteration" value=$smarty.foreach.panellist.iteration}
    {php}hello(){/php}
{/foreach}

そしてPHP関数で:

function hello()
{
    global $smarty;
    ?>
    <div class="hello"><?php echo $smarty->get_template_vars('iteration'); ?>
    </div>
<?php
}

それは機能します(私はそれをテストしました)が、どのプロジェクトでもそのようなコードを使用しようとはしません

于 2014-10-20T19:35:40.863 に答える