以mvc模式传递变量

san*_*ers 5 php variables model-view-controller design-patterns zend-framework

我已经构建了一个符合PHP中mvc模式的系统.控制器和操作是我的应用程序中URL的一部分.所以我有:

www.example.com/controller/action/

所以现在我正在寻找一种传递变量的方法.对于表单我只使用post方法,但有时我只想链接到不同的页面,然后传递一些变量.

我想就如何做到这一点提出一些建议.我知道Zend Framework在控制器中的操作之后使用"/"字符作为分隔符将变量作为键/值对,如下所示:

www.example.com/controller/action/var1/value1/var2/value2

这是最好的方法吗?这实际上是我知道它完成的唯一方式.我正在寻找一种简单但又好的方法来实现它.

欢迎任何建议.

pos*_*ern 5

像CodeIgniter这样的框架允许您将变量传递给控制器​​而不会泄露变量名称 -

/controller/action/foo/bar/
Run Code Online (Sandbox Code Playgroud)

将被处理为:

function action( $id, $value){
  echo $id; // outputs 'foo'
  echo $value; // outputs 'bar'
}
Run Code Online (Sandbox Code Playgroud)

http://codeigniter.com/user_guide/general/controllers.html

我喜欢这个,因为它可以让你控制你的控制器会接受多少参数,如果从不使用某些变量很重要,你可以做适当的逻辑或重定向.


Pra*_*ras 1

您可以选择通过 GET 或 POST 传递变量。

GET 将以漂亮的格式将变量附加到 URL

 /controller/action/var1/value1/var2/value2
Run Code Online (Sandbox Code Playgroud)

或传统方式

 /controller/action/?var1=value1&var2=value2
Run Code Online (Sandbox Code Playgroud)

在前一种情况下,您仍然需要编写 Apache 重写规则来从 URL 中提取变量,并使用正确的变量集作为 $_REQUEST 的一部分路由到控制器/操作。

如果您使用 POST,则可以向每个表单添加隐藏值作为传递变量的方式。

对于您不希望公开的变量,您可以使用会话将它们存储在服务器端。