1

私は2つの形式を持つビューを持っています:

<table>
<th>Write a comment.</th>
<tr>
    <td>
        <?php echo form_open($this->uri->uri_string(),$form1); 
              echo form_textarea($comment);
              echo form_submit('submit','submit');
              echo form_close();
        ?>
    </td>
</tr> 


</table>

<table>
    <tr>

        <td>
            <?php echo form_open($this->uri->uri_string()); 
                  echo form_dropdown('portion', $portion_options); 
                  echo form_submit('book','book');
                  echo form_close();
            ?>
        </td>
    </tr>
</table>

コントローラで、どのボタンがクリックされたかを確認してから、対応するフォームの値をデータベースに追加してアクションを実行します。

if(isset($_POST['book']))
{
    //sending the data to the database
    echo "Book button clicked";
}

if(isset($_POST['submit']))
{
   //sending the data to the database
   echo "Submit button clicked";
}

ただし、[予約]ボタンをクリックしても、アクションは実行されません。ボタンがクリックされなかったようなものです。一方、「送信」ボタンをクリックすると、すべてのアクションが適切に実行されます。

過去に、私はプレーンphp(つまり、フレームワークなし、phpのみ)で同じ手法を使用しましたが、うまく機能しました。codeigniterにはさらに設定が必要ですか?私は何か間違ったことをしていますか?

4

3 に答える 3

1

form_idそれぞれ値1と2で呼び出される両方のフォームに隠しフィールドを追加してみませんか?投稿時にコントローラーを簡単にキャッチできます。例えば:

if($this->input->post()){
  switch($this->input->post('form_id')){
  case 1:
    // do stuff
  break;
  case 2:
    // do stuff
  break;
  }
}
于 2012-09-13T14:13:36.310 に答える
0
<?php echo form_open($this->uri->uri_string(),$form1); 

<?php echo form_open($this->uri->uri_string()); 

次のような2番目の設定を提供するのを忘れたようです。

<?php echo form_open($this->uri->uri_string(),$form2); 
于 2012-09-13T13:54:17.753 に答える
0

これに一日を費やした後、私は最終的にそれをなんとか解決することができました(これを処理するための適切な方法ではないと思いますが)。

上手:

$comment = array(
    'name'      => 'comment',
    'id'        => 'comment',
    'value'     => 'write you comment',
    'row'       => '5',
    'cols'      => '100'
    );

<table>
<th>Write a comment.</th>
<tr>
    <td>
        <?php echo form_open($this->uri->uri_string()); 
              echo form_hidden('form_id', 1);
              echo form_textarea($comment);
              echo form_submit('submit','submit');
              echo form_close();
        ?>
    </td>
</tr> 


</table> 

<table>
    <th>Write a comment.</th>
    <tr>
        <td>

            <?php echo form_open($this->uri->uri_string()); 
                  echo form_hidden('form_id', 2);
                  echo form_dropdown('comment', $portion_options);
                  echo form_submit('book','book');
                  echo form_close();
            ?>

        </td>
    </tr> 


</table> 

おそらく、フォームフィールド(textareaとdropdown)は同じ名前(「comment」に設定)である必要があります。理由はわかりませんが:/

私を助けてくれてありがとう:)

于 2012-09-13T21:37:30.697 に答える