Routing sfDoctrineRoute(symfony)的getObject()方法中未使用查询字符串数据
我正在尝试在Symfony 1.4中制作一个API类型的应用程序。我的目标是接受用户名/密码组合,根据提供的查询参数检索对象 以下是我为我的路线所做的设置: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:
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类。谢谢你的帮助!我已经给了你答案,因为信息+评论回答了问题。