2016-04-27 77 views
0

当我点击提交按钮时,我有一个完美的表单。 我想要的是,如果我在URL中添加参数,它会在访问URL时自动提交表单。Codeigniter在访问URL时提交表格

我的形式如下:

<form id="form_group_data" name="form_group_data" method="post" class="form-horizontal" action="<?php echo site_url('admin/group/add')?>"> 
    <p> 
    <div class="form-body"> 
     <div class="form-group"> 
     <label class="col-md-2 control-label" for="name">Name<span class="required"> * </span></label> 
     <div class="col-md-4"> 
      <input id="name" class="form-control" type="text" name="name" required="required" value=""> 
     </div> 
     </div> 
     <div class="form-group"> 
     <label class="col-md-2 control-label" for="firstname">Firstname<span class="required"> * </span></label> 
     <div class="col-md-4"> 
      <input id="firstname" class="form-control" type="text" name="firstname" required="required" value=""> 
     </div> 
     </div> 
     <input type="submit" value="Ajouter" class="btn blue"/> 
     <button type="button" class="btn default" onclick="window.location='<?php echo site_url('admin/group')?>'">Annuler</button> 
    </div> 
    </p> 
</form> 

如果我手动满山遍野并提交,它的工作原理。现在我可以输入这个URL,它通过URL中的参数填充字段,但我希望它也能自动提交它,而无需点击提交按钮。

示例URL自动填充字段:https://test.ch/admin/user/insert/John/Lennon

这可能吗?用JQuery也许?

+1

删除中间的人 - >窗体并将数据直接附加到数据库 – madalinivascu

回答

0
  • 检查如果URL参数存在
  • 如果是,假设的形式从URL填充数据提交使用jQuery

将这个代码就在结束标记之前

<?php 
if(isset(your_url_parameters)) // check if all parameters exist in url 
{ ?> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#form_group_data").submit(); //submit the form 
    }); 
</script> 

<?php } ?> 
0

如果您有能力填写表单 - 您正在设置此网址 - 那么您也可以将此数据发送到已处理表单提交操作的其他网址。因此,在填写完数据之后,不要试图围绕提交此表单,而是首先将这些参数指向动作网址admin/group/add/other/params/here,然后在该控制器中检查这些参数。但是,请注意,在这种情况下,您正在逐步实施csrf保护,并打开一个潜在的漏洞。如果您打开了该保护,则最好使用csrf标记发布到此终结点以及要发布的数据。

或者,您可以使用此表单的控制器来检查参数是否在url中设置。你应该能够检查参数,如果它们被设置(并且通过你的验证,如果你打算这样做)按照你通常在表单提交上做的事情做。

if (isset($this->uri->segment(4)) && isset($this->uri->segment(5)) { 
    // Do the work here - add to db, etc. Alternatively call the function 
    // that is supposed to do the work and pass these parameters in some way. 
    $this->load->model("my_user_model"); 
    $this->my_user_model->add_user($this->uri->segment(4), $this->uri->segment(5)); 
    redirect("success/url"); 
} 

这只是一个例子。您需要清理和验证您处理的任何表单数据,因此在这种情况下,my_user_model-> add_user需要这样做,或者理想情况下您会在使用CI表单验证库的模型之前执行此操作。

我强烈建议查看form validation文档,作为使用CI内置功能处理表单和提交数据的一个很好的例子。