0

各ユーザーの「テンプレート」ファイルを読み込もうとしています。

ファイルはユーザーごとにロードされるため、2 人のユーザーがいる場合は 2 回ロードされますが、変数$user['profileimg']$user['name']はロードされません。

なぜこれがうまくいかないのか、私にはわかりません。また、これは悪い習慣かもしれないと感じています。だから私の質問は次のとおりです。これを機能させるにはどうすればよいですか/このようなことをどのように行うべきですか。

提供できるヘルプについては、事前に Thx.

これは今得たコードです:

クラス :

class Cprint 
{
    public static function Template($name, $path = 'template')
    {
         include ROOT_DIR . '/' . $path . '/' . $name . '.php';
    }
}

page.php

foreach($Users->getAll() as $user)
{
   Cprint::Template('userlist_template');
}

userlist_template.php :

<div class="userholder">
   <img class="profileimg" src="<?php echo $user['profileimg'] ?>"/>
   <p><?php echo $user['name'] ?></p>
</div>
4

2 に答える 2

0

foreach ループが $user データをテンプレートに転送しないためです。

$user データをテンプレート メソッドに渡す必要があります。

わかりやすく説明すると、静的メソッドTemplateには追加のパラメーター ($users) が必要です。次に、メソッドは配列を2 番目のパラメーターとしてメソッドCprint::Template()に渡す必要があります。$userTemplate()

クラス

class Cprint 
{
    public static function Template($name, $path = 'template', $user= array())
    {
        include ROOT_DIR . '/' . $path . '/' . $name . '.php';
    } 
}

Page.php

foreach($Users->getAll() as $user)
{
   Cprint::Template('userlist_template', $user);
}
于 2013-06-01T18:09:58.590 に答える
0

変数を実行includeすると、含まれているスクリプトが参照する変数は、呼び出された場所のスコープに関連しています

したがって、Cprint の静的関数内で呼び出すため、その関数スコープ内の変数のみが表示されます。

あなたがする必要があるのは、ユーザーを渡すことです

public static function Template($user,$name, $path = 'template')
{
     include ROOT_DIR . '/' . $path . '/' . $name . '.php';
}

そしてそれを適切に呼び出す

foreach($Users->getAll() as $user)
{
   Cprint::Template($user,'userlist_template');
}
于 2013-06-01T18:10:22.093 に答える