【问题标题】:php(codeigniter) set default value with form helperphp(codeigniter) 使用表单助手设置默认值
【发布时间】:2013-05-15 09:25:23
【问题描述】:

我有一个用于不同操作(插入和更新)的表单。我使用isset 函数进行更新。这是完整的代码:

<div id="form_daftar">
    <?php echo form_open($action) ?>
        <?php
            if($action === 'backend/pengurus/add')
                $pengurus['email'] = '';
        ?>
        <p id="input_nama">
            Nama : <?php echo form_input('txt_nama', isset($pengurus['nama'])?$pengurus['nama']:"");?>
        </p>
        <p id="input_email">
            Email : <?php echo form_input('txt_email', 
            isset($pengurus['email'])?$pengurus['email']:"");?>
        </p>
        <p id="input_password">
            Password : <?php echo form_password('txt_pengurus');?>
        </p>
        <p id="input_alamat">
            Alamat : <?php echo form_input('txt_alamat', isset($pengurus['alamat'])?$pengurus['alamat']:"");?>
        </p>
        <p id="input_tanggal_lahir">
            Tanggal Lahir : <input type="text" id="datepicker" name="datepicker"
            value="<?php echo isset($pengurus['tanggal_lahir'])?$pengurus['tanggal_lahir']:""?>"/>  
        </p>

        <?php 
            $action === 'backend/pengurus/add' ? $label = "Daftarkan Pengurus" : $label = "Update Data Pengurus";
            echo form_submit('btn_insert', $label);
        ?>
    <?php echo form_close(); ?>
</div>

但是,我遇到了一个奇怪的错误,因此 isset 无法正常工作。所以,我尝试添加这段代码(上面的sn-p):

<?php
   if($action === 'backend/pengurus/add')
      $pengurus['email'] = '';
?>

但是,$pengurus['email'] 无法识别,尽管它在此代码下方的表单中被识别(查看完整代码)。

我该怎么办?

感谢任何帮助,如果您不理解我的问题,请直接问我(英语不是我的母语)。谢谢:D

【问题讨论】:

  • @IgorS。好吧,我不告诉你细节,因为它很奇怪(而且很难说)。我的 form_input 只是有一个默认值(我不知道该值来自哪里,我可能必须在此处复制整个代码来修复它)。所以,我认为如果 $action 用于插入,我只需要取消设置 $pengurus 的值:D

标签: php forms codeigniter


【解决方案1】:

要在 CI 中设置表单输入的默认值,您可以使用 set_value(),例如:

<?php echo form_input('txt_nama', set_value('txt_nama', ''));?>

【讨论】:

  • 感谢您的帮助,但我还需要 isset 用于更新目的
【解决方案2】:

这样做很简单

当您加载表单以进行插入时,您可以添加一个空数组 并将其传递给表单

$pengurus['name'] = '';
$pengurus['email'] = '';
$pengurus['blah'] = '';

$data['pengurus']   =   $pengurus;

$this->load->view('form',$pengurus);

当您加载表单进行更新时,您可以填写这些

$pengurus['name']   =   $row->name;
$pengurus['email']  =   $row->email;
$pengurus['blah']   =   $row->blah;

$data['pengurus']   =   $pengurus;

$this->load->view('form',$pengurus);    

//$row 是用模型检索到的对象

现在您可以在表单中执行此操作

echo form_input('name', set_value('name',$pengurus['name']));

set_value 采用第二个参数作为默认值。的默认值 插入是''并且更新是一些name。当您提交表单时 如果失败,它将在提交之前检查您提供的值 如果没有找到,它将显示默认值(对于插入 '' 和 更新行->名称)。希望这会有所帮助

【讨论】:

  • 感谢您的帮助。我在我的控制器中尝试了这个,但它仍然无法正常工作:( if ($this->form_validation->run() === FALSE) { $data['pengurus']['email'] = ''; $this ->load->view('template/header_v'); $this->load->view('backend/pengurus_form_v', $data); }
  • @BlazeTama 尝试输入$pangurus['email'] = 'test@gmail.com' 时出现什么错误
  • 没有错误,默认值(我不知道从哪里来)仍然存在。我试了一下,值根本没变@@
  • 您的意思是当您在验证失败时加载表单时会显示默认值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多