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

Routing sfDoctrineRoute(symfony)的getObject()方法中未使用查询字符串数据,routing,symfony1,doctrine,symfony-1.4,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:

我正在尝试在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()
时,它总是从表中返回第一个对象,不管我在
用户名
密码
的POST数据中传递了什么值。(我还尝试使用上面设置为“GET”的
sf_格式在查询字符串中执行GET,得到了相同的结果。)

我做了一些挖掘,发现最终调用的是
sfDoctrineRoute
方法。查询基于
$parameters
数组中的数组键/值执行(仅针对表中具有匹配列名的键)。但是,无论我如何使用
用户名
密码
的参数值调用URL,
$parameters
的值始终等于:

Array (
    'module' => 'user',
    'action' => 'login'
)

如果我将
url
值更改为类似于“/user/login/:username/:password”的值,我就不再有这个问题了:
$parameters
数组将按预期包含用户名/密码数据。但是,我不想在URL中包含这些数据。任何建议都将不胜感激。

只有get数据用于路由。如果你仔细想想,这是有道理的。只有get变量是URL的一部分

您可以在URL中包含登录名。对象将通过登录检索,您需要做的唯一额外的事情是检查密码是否正确


在大多数情况下,sfDoctrineGuardPlugin足以处理与概要文件相关的功能,包括登录。即使您不想使用它,也要抓住它的源代码,看看它是如何工作的。这将对您有很大帮助。

但即使我将
sf\u方法
更改为“get”,我仍然无法获取查询字符串数据。您是否向url添加了登录参数?你需要这样做,使它与条令路线一起工作。这对我所需要的是行不通的。我想我必须创建自己的route类。谢谢你的帮助!我已经给了你答案,因为信息+评论回答了问题。