Так как вы можете настроить AuthComponent
в обратном вызове beforeFilter
, я бы предположил, что вы также сможете выполнить некоторые переключения там:
function beforeFilter() {
if (
isset($this->data['User']['login']) && // login form has been posted
Validation::email($this->data['User']['login']) // value looks like an email
) {
$this->Auth->fields = array('username' => 'email'); // change the db field
}
}
Если это не сработает, вам может потребоваться использовать более ранний фильтр, например beforeRender
, поскольку вам нужно запустить код до AuthComponent::startup()
. В крайнем случае, вы можете расширить AuthComponent :
App::import('Component', 'AuthComponent');
class AppAuthComponent extends AuthComponent {
function startup() {
# your code here
parent::startup();
}
}