【问题标题】:Two different submit buttons in CodeIgniter form without Javascript [duplicate]没有Javascript的CodeIgniter表单中的两个不同提交按钮[重复]
【发布时间】:2013-05-18 17:48:06
【问题描述】:

我有一个可以添加新类别项目的表单。

<form method="POST" action="backend/categories/form">
    <input type="text" name="title" value="" />

    <button type="submit">Save</button>
    <button type="submit">Save and add new</button>
</form>

我想要做的是,如果我点击Save 按钮,它会在控制器中处理一个函数并将我自动重定向到上一页(类别列表页面),但每当我点击Save and add new ,它应该处理函数但重新加载同一页面而不重定向到控制器函数中定义的页面。

控制器:

function form($id){

        // Process the form
        // ...

        // Redirect to the category list page
        redirect($this->config->item('backend_folder').'/categories');
}

在不使用 Javascript 的情况下实现它的任何提示?

【问题讨论】:

  • 这不是重复的!这专门询问如何在 CodeIgniter 中执行此操作,它具有帮助函数以避免直接访问 $_POST。这应该重复的问题根本不涉及 CodeIgniter,也没有回答所提出的问题。然而,这个确实,而且正是我想要的。

标签: php codeigniter-2


【解决方案1】:

使用这个 HTML:

<form method="POST" action="backend/categories/form">
    <input type="text" name="title" value="" />

    <button type="submit" name="submitForm" value="formSave">SAVE</button>
    <button type="submit" name="submitForm" value="formSaveNew">SAVE AND ADD NEW</button>
</form>

然后像这样检查 POST 数据:

$formSubmit = $this->input->post('submitForm');
if( $formSubmit == 'formSaveNew' )
    redirect($this->config->item('backend_folder').'/categories/form');
else
    redirect($this->config->item('backend_folder').'/categories');

免责声明:我没有尝试过。

【讨论】:

  • 我对你的答案做了一些修改,它起作用了
  • @aspirinemaga 太棒了!你关心在这里发布你的更改吗?我会将它们合并到我的答案中,以便对其他访问者有所帮助。您也可以直接编辑我的答案,我会接受更改。
  • @aspirinemaga 感谢您的编辑!
  • 这是否可以将表单数据传送到重定向目标上?
  • @wired00 不,你必须按照these lines 做一些事情才能做到这一点。
【解决方案2】:

这可能对你有帮助:

在控制器的保存功能中使用它。插入/更新代码后立即:

$task = $_POST['submit'];
//echo $task //Save or SaveNew depending on pressed button

    switch ($task)
    {
        case 'Save':

             $this->session->set_flashdata('message',$this->lang->line('changes_has_been_saved_successfully'));
            $link = redirect('cashdrawer/cashdrawerform/12'); //Link after save button with id
            break;


    case 'SaveNew':

            $this->session->set_flashdata('message',$this->lang->line('this_order_has_been_saved_successfully'));
                $link = redirect('cashdrawer/cashdrawerform'); //Link after save and new
            //echo $link;


    }


     redirect($link);

并将您的按钮更改为:

<button type="submit">Save</button>
    <button type="submit">SaveNew</button>

【讨论】:

  • 好的,但是我怎样才能使该开关以形式工作?我的意思是让那个开关找出点击了哪个按钮?通过使用&lt;button name=""...&gt; ?
  • 在控制器的保存功能中使用开关盒。就在插入/更新记录之后..
  • 我应该对&lt;button 做点什么,或者添加一些值或名称吗?
  • 是的.. 第一个 echo($_POST['submit'] ); die(); 在保存功能中。你会看到结果。它必须是 SaveSaveNew。然后将其分配给任务变量$task = $_POST['submit']
  • $task 是干什么用的?
猜你喜欢
  • 2014-10-08
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-01
相关资源
最近更新 更多