如何使用codeigniter从表单操作传递控制器中的id

时间:2013-04-01 04:57:44

标签: php codeigniter codeigniter-2 codeigniter-routing codeigniter-form-helper

嘿伙计们我是codeigniter的新手,我有一个像这样的表格

<form class="addinvestmentform" action="<?php echo base_url();?>index.php/ctl_dbcont/input_investment/$id" name="application" method="post" >
//some code
</form>

我有一个控制器方法

function input_investment($id)
{
$this->load->helper('form');
                $this->load->helper('html');
                $this->load->model('mod_user');
                $this->mod_user->insertinvestment($id);
}

我想从表单操作获取$ id到控制器方法我该怎么做呢。 。请帮助我 。

4 个答案:

答案 0 :(得分:2)

最好传递隐藏字段中的值

<form class="addinvestmentform" action="<?php echo base_url();?>index.php/ctl_dbcont/input_investment" name="application" method="post" >
<input type="hidden" name="my_id" value="<?php echo $id; ?>"/>
</form>
你的ci函数中的

function input_investment() {
    $id = $this->input->post('my_id');
    $this->load->helper('form');
    $this->load->helper('html');
    $this->load->model('mod_user');
    $this->mod_user->insertinvestment($id);
}

或者如果你想要(测试)

//示例视图

<?php $id = 1; ?>
<form action="<?php echo base_url('my_class/my_method/' . $id); ?>" method="post" >
  <input type="submit" />
</form>

//控制器

class My_class extends CI_Controller {

  public function index() {
    $this->load->view('my_class');
  }

  public function my_method($id) {
    echo $id; // outputs 1
  }

}

答案 1 :(得分:1)

如果你想要价值,你需要在元素中使用PHP和echo $ id,现在你需要发送&#39; $ id&#39;到input_investment($ id)。

<form class="addinvestmentform" action="<?php echo base_url();?>index.php/ctl_dbcont/input_investment/<?php echo $id; ?>" name="application" method="post" >
//some code
</form>

答案 2 :(得分:0)

这里你的表单方法是post,所以你通过get方法获取id,你可以这样做

<form class="addinvestmentform" action="<?php echo base_url();?>index.php/ctl_dbcont/input_investment" name="application" method="post" > 
    <input type="hidden" name='id' value="<?php echo $id;?>">
</form>

在您的控制器中,您可以尝试使用

这样的帖子
$id = $_POST['id'];

$id = $this->input->post('id');

如果您尝试从表单中向控制器发送单个或多个数据,那么在所有情况下,它都会为您提供更好的选择....

答案 3 :(得分:0)

$route['ctl_dbcont/input_investment/(:num)'] = "ctl_dbcont/input_investment/$1";

只需在配置/路由中添加此行:)。

这仅适用于数字,如果您有其他类型的ID可以使用(:any)

其他选项是直接使用以下方式捕获id:

$id = $this->uri->segment(3);

其中segment(3)是您域之后的第三个元素:

http://domain/segment1/segment2/segment3