0

我对添加和编辑表单有相同的代码。因此,在控制器中,我需要检查是否 a) POST vars 已提交(用于保存),如果没有,则 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

You can allways make function for it.

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

Or even better:

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()):

您的创建方法会假定它是新的,并且总是读取 $_POST 变量(如果是 $_POST)

您的编辑方法将首先从数据库中加载对象,然后使用 $_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 回答