0

追加フォームと編集フォームに同じコードがあります。したがって、コントローラーでは、a) POST 変数が送信された (保存用)、そうでない場合は b) 元の値 (編集用)、そうでない場合は値がない (追加用の空白) かどうかを確認する必要があります。それらを $data 配列に入れてビューに渡します。次に、私が置くことができる形式で:

value="<?php echo $member_id;?>"

したがって、私の質問は、Codeigniter では、POST かどうかを確認する次の方法よりも短い方法があり、そうでない場合は元のデータが存在するかどうかを確認し、そうでない場合は何もないということです。

$data = array(
    'member_id' => ( isset($_POST['member_id']) ? $_POST['member_id']  : (isset($member->member_id ) ? $member->member_id : '') )
);

set_value() については知っていますが、フォームを編集するときに現在のデータを追加しないように見えるので、使用していません。

4

2 に答える 2

1

あなたはいつでもそれを機能させることができます。

function get_value_or_default($array, $key, $default) {
    return isset($array[$key] ? $array[$key] : 
        isset($default) ? $default : '';
}

またはさらに良い:

function update_from_post($object) {
    $data = array();
    foreach ($object as $prop_name => value) {
        $value = get_value_or_default($_POST, $prop_name, $object->{$prop_name});
        $data[$prop_name] = $value;
}
于 2013-08-21T18:47:29.917 に答える
0

作成と編集のコントローラーに異なるメソッドがあると仮定します: (で指定することにより、異なるメソッドで同じビューを使用できます$this->load->view()):

create メソッドはそれが新しいものであると想定し、常に $_POST 変数を読み取ります ($_POST の場合)。

edit メソッドは、最初にデータベースからオブジェクトをロードし、次に $_POST 変数が存在する場合はそれで上書きします。

最後に、CodeIgniter には入力ヘルパーがあります。

$this->input->post('field_name');

falseそのフィールドが $_POST にない場合に返します。

上記のコードを使用するには:

作成

$data = array(
    'member_id' => $this->input->post('member_id') ? $this->input->post('member_id') : '')
);

編集

$data = array(
    'member_id' => $this->input->post('member_id') ? $this->input->post('member_id') : $member->member_id )
);
于 2013-08-21T19:25:09.783 に答える