0

在我从 2.2 版看到的 CakePHP 的文档中,为 AuthComponent 添加了配置键“包含”:

核心身份验证对象支持以下配置密钥。

[...]

包含加载用户记录时的可包含选项。

http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers

但我无法理解它是如何工作的(没有例子)。

这不起作用:

'Auth' => array(
    'authenticate'      => array(
        'Form' => array(
            'contain'   => array('User' => array('id', 'full_name')),
            'fields'    => array('username' => 'email'),
        )
    )
)

这都不是:

'Auth' => array(
    'authenticate'      => array(
        'Form' => array(
            'contain'   => array('id', 'full_name'),
            'fields'    => array('username' => 'email'),
        )
    )
)

建议?有人试过吗?

4

2 回答 2

2

你快到了。只需在第一个示例中添加“字段”键,如下所示:

'Auth' => array(
    'authenticate'      => array(
        'Form' => array(
            'contain'   => array('User' => array('fields'=>array('id', 'full_name'))),
            'fields'    => array('username' => 'email'),
        )
    )
)

注意:虽然这在语法上是正确的,但我不明白为什么“用户”应该包含“用户”......好吧 YMMV

于 2012-12-03T14:57:31.923 回答
2

Contain()用于包含不同的模型,而不是同一个 Auth 已经检索的模型(除非您尝试包含其他用户,即他们的朋友或其他东西 - 但是您可能有一个别名,而不是“用户”)。

所以,一个例子是:

'Auth' => array(
    'authenticate'      => array(
        'Form' => array(
            'contain'   => array('Post'),
            'fields'    => array('username' => 'email'),
        )
    )
)

这将导致 Auth 在检索用户数据时也检索用户的帖子。

于 2012-12-03T14:58:32.517 回答