查询字符串数据未在sfDoctrineRoute(symfony)的getObject()方法中使用

时间:2011-01-14 21:19:25

标签: routing symfony1 doctrine symfony-1.4

我正在尝试在Symfony 1.4中创建一个API类型的应用程序。我的目标是接受用户名/密码组合,根据提供的查询参数检索对象。

以下是我为我的路线设置的内容:

login:
  url:     /user/login
  class:   sfDoctrineRoute
  options: { model: User, type: object }
  param:   { module: user, action: login }
  requirements:
    sf_method: post
    username: .+
    password: .+

在我的executeLogin()方法中,当我调用$this->getRoute()->getObject()时,它总是从表中返回第一个对象,无论我在username和{{的POST数据中传递了什么值1}}。 (我也尝试在查询字符串中进行GET,password设置为上面的“get”,并得到相同的结果。)

我做了一些挖掘,发现最终正在调用sf_format的{​​{3}}方法。查询是基于sfDoctrineRoute数组中的数组键/值执行的(仅适用于表中具有匹配列名的那些键)。但是,无论我使用$parametersusername的参数值调用网址,password的值始终等于:

$parameters

如果我将Array ( 'module' => 'user', 'action' => 'login' ) 值更改为“/ user / login /:username /:password”,我不再有这个问题:url数组包含用户名/密码数据正如所料。但是,我不想在URL中包含这些数据。任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

只有获取数据才会与路径一起使用。如果你考虑它就有意义了。只有获取变量才是URL的一部分。

您可以在网址中加入登录信息。对象将通过登录检索,您需要做的唯一额外事情是检查密码是否正确。

在大多数情况下,sfDoctrineGuardPlugin足以处理与配置文件相关的功能,包括登录。即使您不想使用它,也可以获取其源代码并查看其工作原理。它会给你很多帮助。