Codeigniter 在控制器中获取 form_open 值

Codeigniter get form_open value in controller

我有一个很小的 ​​CI 表格,如下所示:

<div class="box_txt">
<?php $attributes = array('clock_id' => $clock['id']); ?> 
<?php echo form_open('clock/start', $attributes) ?>
      <input type="submit" value="Start" />
      </form>
 </div>

并且它生成一个具有以下开头的来自:

<form action="../clock/start" clock_id="123" method="post" accept-charset="utf-8">

我真的需要知道在控制器函数中捕获 clock_id 的正确方法是什么?

表单标签上的 clock_id 值不会随表单提交一起发送,因为它不是表单元素。相反,您应该执行以下操作来使用隐藏字段:

echo form_hidden('clock_id', $clock['id']);

这将在您的表单中创建一个隐藏字段,名称为 'clock_id',值在本例中为“123”

如果您需要 clock_id 在控制器中,请尝试此代码。

<div class="box_txt">

    <?php echo form_open('clock/start') ?>
         <input type="hidden" name="clock_id" value="123" />
         <input type="submit" value="Start" />
     <?php echo form_close() ?>

     </div>

控制器:

function start()
{
    $clock_id = $this->input->post('clock_id');
}

与其将 clock_id 作为表单属性,不如考虑使用隐藏的输入标签:

<input type='hidden' name='clock_id' value='<?php echo $clock["id"]; ?>'/>

那么你可以使用$this->input->post('clock_id')

来处理它

否则,如果你真的想坚持你的代码,你可以使用 jquery 获取属性并发送 ajax 请求:

var clock_id = $('form').attr('clock_id');

$('form').submit(function(e){
    e.preventDefault();
    var url = $(this).attr('action');
    var type = $(this).attr('method');
    var data = $(this).serialize() + '&clock_id=' + clock_id
    $.ajax({
        url: url,
        type: type,
        data: data,
        success:function(response){ /* handle response */}
    });
});