我收到错误
数据库错误错误:SQLSTATE [42000]:语法错误或访问 违规:1064您的SQL语法出错;
我的插件位于app文件夹外的common cake文件夹中,因此多个应用可以使用它。
CakeFolder /插件/为myplugin /控制器/ UsersController.php
class UsersController extends AppController {
// This works
public function dummySignin(){
if ($this->request->is('post')) {
$this->User->dummyMethod(); //called before auth
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
}else{
$this->Session->setFlash('Username or password is incorrect');
}
}
}
// This doesn't
public function signin(){
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->User->dummyMethod(); //called after auth
return $this->redirect($this->Auth->redirectUrl());
}else{
$this->Session->setFlash('Username or password is incorrect');
}
}
}
}
CakeFolder /插件/为myplugin /型号/ user.php的
class User extends AppModel {
public function dummyMethod(){
return true;
}
}
我没有在控制器中声明模型名称,因为它是自动加载的。此外,我已尝试在Auth组件声明中指定用户模型,但没有任何结果。这似乎是由于我的模型没有正确加载,但我无法弄清楚原因。
答案 0 :(得分:1)
这是我原帖的引用
我已尝试在Auth组件声明中指定用户模型,但没有任何结果。
那是我错的地方。事实证明我的Auth设置有误。我的自定义模型在authenticate选项之外声明。这就是我所拥有的:
'userModel' => 'myPlugin.User',
'authenticate' => array(
'Form' => array(
'fields' => array('username' => 'email')
)
),
正确用法是:
'authenticate' => array(
'Form' => array(
'userModel' => 'myPlugin.User',
'fields' => array('username' => 'email')
)
),
谢谢大家的答案。这是rubber duck debugging的案例。
答案 1 :(得分:0)
我认为这可能与Cake尝试在app / Models中使用Auth组件的用户模型这一事实有关,而且你的插件用户模型之间的混淆?在这里阅读:http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html Auth默认使用的模型是User,所以也许你可以覆盖它以使用你的插件?不确定你是否必须明确说明考虑控制器也在你的插件中......