1

私のSql関数getLive_projectsには次のクエリがあります-
$query = "SELECT p.* FROM projects p WHERE p.live = 1 ORDER BY client_name ASC";
$response = $this->db->query($query)->result();

My Controller :
// ライブ プロジェクトを取得
$data['live_projects'] = $this->projects->get_live_projects();
// データを含むプロジェクトをロードします
$this->parser->parse("projects.tpl", $data);

{$live_projects|print_r} を使用すると、テンプレートのデータは次のようになります。

Array
(
[0] => stdClass Object
    (
        [id] => 1
        [client_name] => client one
        [dev_url] => clientone.com
        [live_url] => clientone.com
        [version] => 1.0
        [live] => 1
    )

[1] => stdClass Object
    (
        [id] => 2
        [client_name] => client two
        [dev_url] => clienttwo.com
        [live_url] => clienttwo.com
        [version] => 3.1
        [live] => 1
    )

)

これをテンプレートに出力するにはどうすればよいですか? {foreach from=$live_projects item=$project} を試してから、{$project->client_name} を使用しようとしましたが、うまくいきませんでした。配列をループするときにオブジェクトを使用できないようにする必要がありますか? 明らかな何かを見逃しましたか?私はこれを正しい方法で行っていますか?返された結果をループして、それぞれをテンプレートの行として表示したいだけです。

フォーラムを検索しましたが、問題を解決する答えが見つかりませんでした。$live_projects[0]->id の使用に関するいくつかの例がありますが、結果セットで多くのアイテムが返される smarty からの出力にどのように組み込むことができますか。

4

1 に答える 1

0

あなたはほとんどそこにいました!item 変数の名前を定義するとき、「$」記号を含める必要はありません。コードを次のように変更します。

{foreach from=$live_projects item=project}
    {$project->client_name}
{/foreach}

これでうまくいくはずです。

于 2011-09-28T09:40:16.273 に答える