我正在尝试在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
数组中的数组键/值执行的(仅适用于表中具有匹配列名的那些键)。但是,无论我使用$parameters
和username
的参数值调用网址,password
的值始终等于:
$parameters
如果我将Array (
'module' => 'user',
'action' => 'login'
)
值更改为“/ user / login /:username /:password”,我不再有这个问题:url
数组包含用户名/密码数据正如所料。但是,我不想在URL中包含这些数据。任何建议都表示赞赏。
答案 0 :(得分:1)
只有获取数据才会与路径一起使用。如果你考虑它就有意义了。只有获取变量才是URL的一部分。
您可以在网址中加入登录信息。对象将通过登录检索,您需要做的唯一额外事情是检查密码是否正确。
在大多数情况下,sfDoctrineGuardPlugin足以处理与配置文件相关的功能,包括登录。即使您不想使用它,也可以获取其源代码并查看其工作原理。它会给你很多帮助。