Forms CodeIgniter-两张表格,一页

Forms CodeIgniter-两张表格,一页,forms,codeigniter,controller,Forms,Codeigniter,Controller,我在理解MVC的概念和一次显示多个表单方面遇到了一个基本问题。我尝试过各种方法,但我仍然被卡住了——这是因为我认为我没有正确理解CI和MVC 我尝试对两种不同的表单使用两种不同的视图。没用。我尝试在我的控制器中每个窗体使用一个函数。那也没用。我不知道该怎么办 我应该这样做 创建一个控制器并在其中包含index()函数 在此索引()中为每个表单构建我的表单元素 创建一个显示这两个表单的视图,并从index()中调用它 使用form_open将提交操作定向到另一个函数-调用它validate() 验

我在理解MVC的概念和一次显示多个表单方面遇到了一个基本问题。我尝试过各种方法,但我仍然被卡住了——这是因为我认为我没有正确理解CI和MVC

我尝试对两种不同的表单使用两种不同的视图。没用。我尝试在我的控制器中每个窗体使用一个函数。那也没用。我不知道该怎么办

我应该这样做

  • 创建一个控制器并在其中包含index()函数
  • 在此索引()中为每个表单构建我的表单元素
  • 创建一个显示这两个表单的视图,并从index()中调用它
  • 使用form_open将提交操作定向到另一个函数-调用它validate()
  • 验证输入的所有内容,发回错误
  • 不知何故,这是我没有得到的主要信息,如果表格填写正确,请完成一项操作
  • 6是我最大的问题。我不知道怎么做。例如,在成功完成表单后,我希望我的用户在所选位置创建了一个目录-因此我使用mkdir()-那么我是否需要在validate()函数中使用if语句,或者做什么

    更新

    以下是我迄今为止创建的代码

    控制器:

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    }

    这里有一个视图(add_new_file.php)

    
    上载文件/出版物
    

    下面是另一个(add_new_folder.php)

    div id=“container”>
    添加新文件夹
    新文件夹名称:
    

    我希望这有助于回答这个问题

    基本上,我可以让第一部分工作-添加文件夹-但我不能让添加文件工作。这是因为如果($This->form\u validation->run()==FALSE)总是返回FALSE。我认为它可能在另一个表单中查看表单元素——这是不应该的。我错过了什么

    我应该这样做
    1.创建一个控制器并在其中包含一个index()函数。
    [为了便于交谈,让我们呼叫此控制器
    用户
    thx-ed]

    当然。那很酷。您还可以在该控制器中使用名为
    edit
    、或
    banana
    或其他功能;两种方法都有效。仅使用
    索引
    方法(函数),url可能看起来像
    http://example.com/index.php/users
    而如果向控制器添加另一种方法,如
    banana
    ,则url可能看起来像
    http://example.com/index.php/users/banana

    二,。在此索引()中为每个表单构建我的表单元素

    通常,表单元素不会在控制器中创建。这就是MVC中的V的作用所在——您查看的内容进入
    视图

    因此,人们可能会这样做

    // Users Controller
    class Users extends CI_Controller{
        function index(){
            //index method
        }
    
        function banana(){
            $this->load->view('banana_view');
        }
    }
    
    然后在
    application/views/banana_view.php
    中创建表单。当您访问
    http://example.com/users/banana
    ,您将看到在
    banana\u view.php
    中创建的表单

    三,。创建一个显示这两个表单的视图,并从index()中调用它

    当然,那很好。但是请记住,每个
    内部都需要自己的
    ,因此需要某个地方来发送每个表单数据。这是
    操作=”“
    。您可以省去它,但请注意,它会将表单发送到您当前所在的任何页面(在我们这里,
    http://example.com/index.php/users/banana
    ),因此必须在
    banana()
    方法中有一些内容来处理表单数据。但是,通常会通过
    form\u open()
    进行设置。类似于
    form_-open('index.php/users/eat_-banana')将生成
    
    我应该这样做
    1.创建一个控制器并在其中包含一个index()函数。
    [为了便于交谈,让我们呼叫此控制器
    用户
    thx-ed]

    当然。那很酷。您还可以在该控制器中使用名为
    edit
    、或
    banana
    或其他功能;两种方法都有效。仅使用
    索引
    方法(函数),url可能看起来像
    http://example.com/index.php/users
    而如果向控制器添加另一种方法,如
    banana
    ,则url可能看起来像
    http://example.com/index.php/users/banana

    二,。在此索引()中为每个表单构建我的表单元素

    通常,表单元素不会在控制器中创建。这就是MVC中的V的作用所在——您查看的内容进入
    视图

    因此,人们可能会这样做

    // Users Controller
    class Users extends CI_Controller{
        function index(){
            //index method
        }
    
        function banana(){
            $this->load->view('banana_view');
        }
    }
    
    然后在
    application/views/banana_view.php
    中创建表单。当您访问
    http://example.com/users/banana
    ,您将看到在
    banana\u view.php
    中创建的表单

    三,。创建一个显示这两个表单的视图,并从index()中调用它


    当然,那很好。但是请记住,每个
    内部都需要自己的
    ,因此需要某个地方来发送每个表单数据。这是
    操作=”“
    。您可以省去它,但请注意,它会将表单发送到您当前所在的任何页面(在我们这里,
    http://example.com/index.php/users/banana
    ),因此必须在
    banana()
    方法中有一些内容来处理表单数据。但是,通常会通过
    form\u open()
    进行设置。类似于
    form_-open('index.php/users/eat_-banana')将生成
    ——以什么方式?表单是否显示不正确,是否存在一些错误,或者只是没有达到预期效果?您可以随意加载视图-一个视图、多个视图等。您是对的,在控制器中,您可能希望每个窗体的操作都有一个函数。为了你最大的
    
    div id="container">
    
    <h1>Add A New Folder</h1>
    
    <div id="body">
    
    <?php echo validation_errors(); ?>
    
    <?php echo form_open('admin/add_folder');?>
    
    <?php echo $folder_list_add; ?>   &nbsp;&nbsp; 
    New Folder Name: <input type="text" name="new_folder_name">   &nbsp;&nbsp; 
    <input type="submit" value="upload" />
    
    </form>
    
    </div>
    
    // Users Controller
    class Users extends CI_Controller{
        function index(){
            //index method
        }
    
        function banana(){
            $this->load->view('banana_view');
        }
    }
    
    class Users extends CI_Controller{
    
        function index(){
            //index method
        }
    
        function banana(){
            $this->load->view('banana_view');
        }
    
        // assuming form_open('index.php/users/eat_banana'); in banana_view
        function eat_banana(){
            //make sure that this is a POST
            if($this->input->post()){
                // do things with the data
                // typically it gets saved to a database
                // via a model (the M in MVC)
                // http://ellislab.com/codeigniter/user-guide/general/models.html
    
                if($saved_to_db){
                    // set message to send to the view
                    $data['message'] = "Everything went OK";
                }else{
                    $data['message'] = "but who was database? data didn't save :(";
                }
                // load the view and send the data
                $this->load->view('eat_banana', $data);
            }
         }
    
     <!DOCTYPE html>
     <html>
     <head></head>
     <body>
     <div>
         <b>Form submitted.</b><br />
         The message is: <?php echo $message; ?>
     </div>
     </html>
    
    class Users extends CI_Controller{
    
        function index(){
            //index method
        }
    
        function banana(){
            $this->load->view('banana_view');
        }
    
        // assuming form_open('index.php/users/eat_banana'); in banana_view
        function eat_banana(){
            //make sure that this is a POST
            if($this->input->post()){
                // do things with the data             
                if($saved_to_db){
                    // just send them to the homepage
                    redirect('/');
                }else{
                    // send them back to the form
                    redirect('index.php/users/banana');
                }
            }
         }