0

私はCIを初めて使用し、今日更新フォームクラスを作成しようとしていますが、行き止まりに陥っています。フォームを作成し、データをデータベースに公開するように関数を設定しました。これを更新できるようにする必要があります。

私の編集フォーム機能は以下のとおりです。

public function edit_event()
{

    $vars = array();

    $data['form_url'] = $this->form_url;

    if ($form_id = $this->EE->input->get('form_id'))
    {
        $data['form_id'] = $form_id;
    }

    return $this->EE->load->view('edit_event', $data, TRUE);
}

関数内にロードされる edit_event ファイルは次のとおりです。

<?php

    $this->EE=& get_instance();

    $this->load->helper('form');

        $attributes = array('class' => 'event_form', 'id' => 'my_event_form');

    echo form_open($form_url.AMP.'method=update_form', $attributes);

        $this->EE->load->library('table');
        $this->EE->table->set_heading(
            'Preference',
            'Setting'
        );



        $query = $this->EE->db->query("SELECT * FROM exp_events WHERE id = '$form_id'");

        foreach($query->result_array() as $row)
            {

                $this->EE->table->add_row(
                    form_label('Application Key', 'app_key'),
                    form_input('app_key',$row['app_key'])
                );

                $this->EE->table->add_row(
                    form_label('Access Token', 'access_token'),
                    form_input('access_token',$row['access_token'])
                );

                $this->EE->table->add_row(
                    form_label('User Key', 'user_key'),
                    form_input('user_key',$row['user_key'])
                );

            }

        echo $this->EE->table->generate();


        echo form_reset('reset', 'Clear Form');
        echo form_submit('mysubmit', 'Submit Post!');


    echo form_close();

?>

次に、更新フォーム機能があります。

public function update_form()

{

    $form_id = $this->EE->input->get('form_id');

    $data['form_id'] = $form_id;

    $form_data = array(
        'app_key'        => $this->EE->input->post('app_key'),
        'access_token'   => $this->EE->input->post('access_token'),
        'user_key'       => $this->EE->input->post('user_key')
    );


    $this->EE->db->where('id', $form_id);       
    $this->EE->db->update('exp_events', $form_data);


    $this->EE->functions->redirect($this->base_url);

}

$form_if オプションを削除すると、データを更新できますが、データベース内のすべてのアイテムが更新されます。編集中のフォームのフォームIDでデータのみを更新するには、明らかにこれが必要です。

現状では、更新フォームを送信すると、正しい $base_url にリダイレクトされますが、データが更新されないため、フォーム ID を定義するときに明らかに何か間違っていますか?

私が言ったように、私はこれに慣れていないので、誰かが好ましい方法に気づいたら、遠慮なく教えてください:)。

任意のポインタをいただければ幸いです。

前もって感謝します。

ベン

4

1 に答える 1

0

form_id を使用して、フォームに「非表示」フィールドを含める必要があります。現時点では、「form_id」は入力の一部ではないため、form_id を取得すると失敗します。

変化する

    echo $this->EE->table->generate();
    echo form_reset('reset', 'Clear Form');
    echo form_submit('mysubmit', 'Submit Post!');

    echo $this->EE->table->generate();
    echo form_hidden('form_id', $form_id);
    echo form_reset('reset', 'Clear Form');
    echo form_submit('mysubmit', 'Submit Post!');
于 2012-11-26T03:00:24.023 に答える