【问题标题】:MVC pattern and $_POST variablesMVC 模式和 $_POST 变量
【发布时间】:2009-12-20 10:55:33
【问题描述】:

我正在构建一个基于 php/mysql 的框架和 cms ,我陷入了使用 post 方法将变量从一个控制器中的表单传递到另一个控制器的困境。更准确地说,我构建了一个用于更改语言的表单。这个表单位于localhost/index/index,当我选择一种语言时,它会转到http://localhost/application/change_language,其中change_language是应用程序类中的一个公共函数。问题是该表单中的 $_POST 变量无法通过 change_language 函数。我在这个函数中对整个 $_POST 树进行了 var_dump,得到的只是 array(0) { }。我做错了什么,或者为什么这不起作用?对不起我的英语不好 。干杯

【问题讨论】:

  • 请提供一些代码。除此之外,您可能希望使用封装 POST 的 Request 对象,您可以传递它。
  • 请务必发布一些代码。

标签: php model-view-controller forms


【解决方案1】:

听起来您可以使用会话来传输数据。我在 CodeIgniter 中遇到了这个问题并发布了数据。我用帖子数据创建了一个会话,工作得像个冠军。

【讨论】:

  • 听起来是个很糟糕的建议。
【解决方案2】:

可能是各种各样的事情出错了,最好在这里发布一些代码,这样我们就可以看看哪里出了问题,而不是盲目地猜测可能出了什么问题。

尽管乍一看,听起来您没有正确地将表单值发布到函数 change_language。请检查表格的格式是否正确。你可能想看看this

【讨论】:

    【解决方案3】:

    从 MVC 的角度来看,表单应该在 View 而不是 Controller 中。因此,我建议您将表单放在 View 中,然后将表单的 action 属性指定给控制器,控制器将处理表单请求,如下所示:

    <form name="myform" method="post" action="index.php/your_controller">
    .... more stuff here
    </from>
    

    现在您为 your_controller 控制器编写代码以处理表单请求:

    class your_controller extends whateverparentcontroller
    {
        print '<pre>';
        print_r($_POST);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 2011-05-20
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 2011-03-30
      • 2010-12-28
      相关资源
      最近更新 更多