3

codeigniter を使用して、次のように foreach ループ内でビューを読み込もうとしました。

$posts = $this->postslibrary->getAllPosts();
foreach($posts as $post){
  $home['content'][$i] = $this->load->view('post', $post['data'], true);
  $i++;
}
$this->load->view('head');
$this->load->view('home', $home);
$this->load->view('footer');

これらの各投稿ビューは、次のようになります。

<div class="postnum<?=$post_num?>">
  <p>Posted by: <?=$poster_name?></p>
  <p>Reply to: <?=$poster_name?></p>
  <form>
  <input type='text' />
  <input type='submit' />
  </form>
</div>

そして、それらは「ホーム」ビューでほとんど正常にロードされています(完全性のために以下にあります)。

<div ="posts">
  <?php
    for($i=0;$i<$count;$i++)
    {
      echo($content[$i]);
    }
  ?>
  <div class="clear"></div>
  <a href='/posts/browse/'>Load more items</a>
</div>

しかし、私の出力は次のようになります。

<div class='posts'>
  <div class='postnum1'>
    <p>Posted By: Jim</p>
    <p>Reply to Jim</p>
    <input type='text' />
    <input type='submit' />
  </div>
</div>

フォーム タグが通過しないのはなぜですか?

4

2 に答える 2

0

少しフィールド外の答えですが、CodeIgniter Form Generatorを見てください。私はそれを数回使用しましたが、配列からフォームを生成するにはかなり良いようです。最初に理解するのは少し難しいですが、慣れてしまえばうまくいきます。

基本的な考え方は、通常のコントローラーからフォーム コントローラーを実装し、それをビュー ファイルに出力するだけです。それは、あなたがしようとしていることに対するよりエレガントな (そして持続可能な) 解決策かもしれません。

于 2012-10-17T14:52:10.163 に答える
0

現在のフォームの周囲に既にフォームがあるかどうかを確認します。Chrome は、これを受け入れず、2 番目のフォームを削除するブラウザーの 1 つです。フォーム内でフォームを使用することは悪い習慣であり、フォーム処理を行う別の解決策を見つけることをお勧めします。

于 2012-07-26T19:51:33.970 に答える