【问题标题】:Best way for form action?表单操作的最佳方式?
【发布时间】:2015-11-28 16:46:58
【问题描述】:

我刚开始使用 Code Igniter 框架,也刚开始学习 PHP OOP。我在为表单编码时遇到了一些事情。

在一个表单中,如果我有两个按钮会导致不同的页面,那么最合适的方法是什么?我找到了两种方法。第一个是有一个动态的动作/链接,我们称之为方法A:

方法A

变量 $form_link 是 'form_link'。

(查看)main_user_view.php

<?php echo form_open($form_link); ?>
<?php echo form_button($add_user_button); ?>
<?php echo form_button($delete_user_button); ?>
<?php echo form_close(); ?>

(控制器)用户.php

public function form_link()
{   
    // Value of button clicked
    $form_submitted = $this->input->post('submit_form'); 

    if($form_submitted == 'add_user')
    {
        redirect('User/add_user');
    }
    elseif($form_submitted == 'delete_user')
    {
        redirect('User/delete_user');
    }
    elseif($form_submitted == 'back')
    {
        redirect('User');
    }
}

另一种方法是使用锚点并为其创建绝对路径,而不是使用第二个按钮。

方法B

变量 $form_link 是 'add_user',它是控制器中的一个函数。

(查看)main_user_view.php

<?php echo form_open($form_link); ?>
<?php echo form_button($add_user_button); ?>
<?php echo anchor('add_delete_user/delete_users_view', 'Delete', array('class'=>'btn btn-info', 'role'=>'button'));?>
<?php echo form_close(); ?>

我对方法 A 的唯一问题是,如果在表单中我有输入字段,我无法通过 POST 获取数据,因为 redirect 不会将数据传递给其他函数。我通过使用方法 B 解决了这个问题,其中锚点将导致我想要的功能,从而我可以获得 POST 数据。

所以我的主要问题是,每当我在一个表单中有两个或更多按钮时,我应该使用方法 B 吗?

【问题讨论】:

    标签: php forms codeigniter oop model-view-controller


    【解决方案1】:

    我的意见也是使用方法 B。为了使 URL 更漂亮,您可以使用自定义路由(位于 'application/config/routes.php')

    【讨论】:

    • 为什么要使用方法B?我需要某种解释。
    【解决方案2】:

    您必须为表单发布操作使用按钮名称,

    public function form_link()
    {   
        if($this->input->post('add_user'))
        {
            redirect('User/add_user');
        }
        if($this->input->post('delete_user'))
        {
            redirect('User/delete_user');
        }
    }
    

    【讨论】:

    • 虽然这不是我的问题的一部分,但谢谢。 IE 10 出现无法加载的问题。然而,主要问题是哪种方法(我上面已经说过)最好?
    • 聪明的方法是方法B。对于方法A,您必须区分表单发布操作。方法B,不需要指定表单动作..
    猜你喜欢
    • 2011-02-06
    • 2018-04-14
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多