私は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 を定義するときに明らかに何か間違っていますか?
私が言ったように、私はこれに慣れていないので、誰かが好ましい方法に気づいたら、遠慮なく教えてください:)。
任意のポインタをいただければ幸いです。
前もって感謝します。
ベン