1

このhttp://codeigniter.com/user_guide/libraries/parser.htmlチュートリアルでは、この多次元配列があります

$data = array(
          'blog_title'   => 'My Blog Title',
          'blog_heading' => 'My Blog Heading',
          'blog_entries' => array(
                                  array('title' => 'Title 1', 'body' => 'Body 1'),
                                  array('title' => 'Title 2', 'body' => 'Body 2'),
                                  array('title' => 'Title 3', 'body' => 'Body 3'),
                                  array('title' => 'Title 4', 'body' => 'Body 4'),
                                  array('title' => 'Title 5', 'body' => 'Body 5')
                                  )
        );

そして、私たちは彼をこのように簡単に印刷します

{blog_entries}
    <h5>{title}</h5>
    <p>{body}</p>
{/blog_entries}

しかし、このような配列を出力する方法http://i.imgur.com/L6i1B.png :?

 $data = array( 
array(
    'user' => array('id' => "1", 'name' => "Test1"
    ),'title' => 'Title 1', 'body' => 'Body 1'),
array(
    'user' => array('id' => "2", 'name' => "Test2"
    ),'title' => 'Title 2', 'body' => 'Body 2'),
array(
    'user' => array('id' => "3", 'name' => "Test3"
    ),'title' => 'Title 3', 'body' => 'Body 3')
);

このようなことをしようとすると

{blog_entries}
    {user}
        {id}
    {/user}
    {title}
    {body}
    <br />
{/blog_entries}

エラーが発生します:

Message: Invalid argument supplied for foreach()

ああ、ここで同様の問題が見つかりましたExtended Template Parser: CodeIgniter... ネストされた配列の問題

4

2 に答える 2

1

この機能は、組み込みのテンプレート クラスに含まれています。(最初に質問を投稿したときに存在していたかどうかはわかりませんが、今はそこにあります。私はそれを自分で使用しています。)秘訣は、パーサーに渡す適切な配列構造を作成することです。この例をライブ ページでテストしたところ、CI 2.1.3 で 100% 動作します。

具体的な例として、ホテルで利用可能な一連の部屋を (最小限のフォーマットで) 表示し、旅行の各日の 1 日あたりの料金を部屋ごとに表示する次のコードを考えてみましょう。(この例では 2 日間)

{available_rooms}
    <p>{room_type} {total_rate}</p>
    {room_rates}
        <p>${room_rate} {room_date}</p>
    {/room_rates}
    <hr>
{/available_rooms}

次のようなアウトプットなし:

1 King Bed 119.98
 59.99 2013-03-23
 59.99 2013-03-24

1 King Bed 119.98
 59.99 2013-03-23
 59.99 2013-03-24

2 Double Beds 139.98
 69.99 2013-03-23
 69.99 2013-03-24

2 Double Beds 139.98
 69.99 2013-03-23
 69.99 2013-03-24

これは、この例でうまく使用した配列です。

> available_rooms > 0 > room_type = 1 King Bed 
> available_rooms > 0 > total_rate = 119.98 
> available_rooms > 0 > room_rates > 0 > room_rate = 59.99 
> available_rooms > 0 > room_rates > 0 > room_date = 2013-03-23 
> available_rooms > 0 > room_rates > 1 > room_rate = 59.99 
> available_rooms > 0 > room_rates > 1 > room_date = 2013-03-24 
> available_rooms > 1 > room_type = 1 King Bed 
> available_rooms > 1 > total_rate = 119.98 
> available_rooms > 1 > room_rates > 0 > room_rate = 59.99 
> available_rooms > 1 > room_rates > 0 > room_date = 2013-03-23 
> available_rooms > 1 > room_rates > 1 > room_rate = 59.99 
> available_rooms > 1 > room_rates > 1 > room_date = 2013-03-24 
> available_rooms > 2 > room_type = 2 Double Beds 
> available_rooms > 2 > total_rate = 139.98 
> available_rooms > 2 > room_rates > 0 > room_rate = 69.99 
> available_rooms > 2 > room_rates > 0 > room_date = 2013-03-23 
> available_rooms > 2 > room_rates > 1 > room_rate = 69.99 
> available_rooms > 2 > room_rates > 1 > room_date = 2013-03-24 
> available_rooms > 3 > room_type = 2 Double Beds 
> available_rooms > 3 > total_rate = 139.98 
> available_rooms > 3 > room_rates > 0 > room_rate = 69.99 
> available_rooms > 3 > room_rates > 0 > room_date = 2013-03-23 
> available_rooms > 3 > room_rates > 1 > room_rate = 69.99 
> available_rooms > 3 > room_rates > 1 > room_date = 2013-03-24
于 2013-03-22T22:26:12.770 に答える
0

このようにアレイをセットアップします

$data = array( 'user' => array('id' => "1", 'name' => "Test1", 'title' => 'Title 1', 'body' => 'Body 1'),
                         array('id' => "2", 'name' => "Test2", 'title' => 'Title 2', 'body' => 'Body 2'),
                         array('id' => "3", 'name' => "Test3", 'title' => 'Title 3', 'body' => 'Body 3')
);

その後は、HTML タグの入れ子に似ていますが、PHP のキーと値のペアを除きます (それが理にかなっている場合)。

{user}
    <h4>{name} : {id}</h4>
    <span>{title}</span>
    <p>
        {body}
    </p>
{/user}
于 2012-10-22T14:55:33.023 に答える