【发布时间】: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