1

ユーザーが更新できるように、データベースから取得したデータから 2 つのフォーム フィールドを作成しようとしています。テーブルが呼び出されrecords、非常に単純です。

Record_ID
タイトル
内容

私のモデル:

function get_data()
{
    $r = $this->uri->segment(3);

    $query = $this->db->get_where('records', array('Record_ID' => $r));
    return $query->result();
}

私のコントローラー:

function set_values()
{
    $data = $this->entries_model->get_data();
    $this->load->view('update_view', $data);                       
}

そして私の更新レコードビュー:

<?php

echo form_open('site/update',$data);?>
Title:
<?php echo form_input('title',set_value('title'));?>
Content:
<?php echo form_input('content',set_value('content'));
echo form_submit('submit', 'Submit');?>

<?php echo form_close();?>

問題は、次のエラーが発生することです。

PHP エラーが発生しました

重大度: 通知

メッセージ: 未定義の変数: データ

ファイル名: views/update_view.php

ライン番号: 10

私の質問は 2 つあります。

  1. ビュー フォームでこのデータにアクセスする方法と
  2. それぞれのフィールドに入力するにはどうすればよいですか。

私は Codeigniter を初めて使用します。私の質問は単純に見えるかもしれませんが、助けていただければ幸いです。前もって感謝します。

4

4 に答える 4

0

まず、適切な方法でデータを渡す必要があります

交換

$data = $this->entries_model->get_data();

with:

$data['data'] = $this->entries_model->get_data();

set_value に値を設定するには、インライン条件チェックを実行して、データがオブジェクトであるかどうかを確認する必要があります

<?php echo form_input('title',set_value((is_object($data)?$data->title:'')));?>

すべてのフォームフィールドに対して同じことをする必要があります

于 2013-03-28T17:47:32.677 に答える
0

ビュー ファイルに配列を渡す必要があります。したがって、次のように置き換えます。

$data = $this->entries_model->get_data();

と:

$data['entries_data'] = $this->entries_model->get_data();

ビューファイルで次を置き換えます:

echo form_open('site/update',$data);?>

と:

echo form_open('site/update',$entries_data);?>
于 2013-03-28T17:37:46.687 に答える
0

ここでいくつかのことが起こっています:

  1. $data は、ビューに渡される配列またはオブジェクトです。その ELEMENTS は、ビューで変数として使用できます。したがって、コントローラーの $data['myelement'] = 'somevalue' は、ビューでは $somevalue としてアクセスされます。

  2. 2 番目のパラメーターをform_open()メソッドに渡す場合、生成されるタグの属性のキーと値のペアであることが期待されます。同様に、array('class' => 'form_class', 'id' => 'form_id')

  3. フォーム入力の値を設定する場合は、ビュー ヘルパー関数set_value()を使用します。あなたの場合、コントローラーを使用して、ビューに渡す $data 配列に要素を設定します。$data['form_values'] = array('title' => $title, 'content' => $content);

次に、ビューで:

于 2013-03-28T17:39:44.583 に答える