CIで基本的なWebサイトを構築しています。フォーム ヘルパーを使用してフォームを作成し、次の行に沿って何かを実行しています。
ビュー (create_form.php から):
<?php $this->load->helper('form'); ?>
<?php echo form_open('site/create_article'); ?>
<?php echo form_label('Title:', 'title'); ?><br />
<?php echo form_input('title'); ?><br /><br />
<?php echo form_label('Body:', 'text'); ?><br />
<?php echo form_textarea('text'); ?><br /><br />
<?php echo form_submit('submit', 'Post Article'); ?>
コントローラー (site.php から):
function create_article()
{
$this->load->model('site_model');
$this->load->helper('form');
$post_check = $this->input->post('submit');
if ($post_check === TRUE)
{
$this->site_model->create_article($post_check);
$this->load->view('created');
}
else
{
$this->load->view('create_form');
}
}
モデル:
function create_article($post_check)
{
$this->load->helper('date');
$data = array(
'title' => $post_check['title'],
'text' => $post_check['text'],
'created' => now()
);
$this->db->insert('articles', $data);
}
フォームを送信すると、確認ページ「created.php」ではなく、「create_article.php」(フォームを含む) がリロードされます。おそらく $post_check はそれに渡されたデータを取得していませんが、送信後にページを更新すると POST データ通知がトリガーされるため、その理由はわかりません-何かが確実に取得されています! どんな提案でも大歓迎です。