我刚开始使用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(); ?>
(Controller)User.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吗?
答案 0 :(得分:1)
您必须使用按钮名称进行表单发布操作,
public function form_link()
{
if($this->input->post('add_user'))
{
redirect('User/add_user');
}
if($this->input->post('delete_user'))
{
redirect('User/delete_user');
}
}
答案 1 :(得分:0)
我的意见是使用方法B.为了使URL更好,您可以使用自定义路由(位于“application/config/routes.php
”)