在CakePHP(2.5.1)应用程序

时间:2016-07-13 15:52:20

标签: cakephp plugins cakedc

我是CakePHP的新手,正在开发一个Web应用程序。我已经为应用程序实现了登录,注册(包括recaptcha)和其他数据输入选项。现在,我需要添加一个管理面板和电子邮件确认选项(以确认注册)到现有的应用程序。我找到了一个插件 - CakeDC / users,并试图将它与应用程序集成。安装并上载文件后,会显示“添加用户”,“登录”选项。当我添加用户时,它显示以下错误:

Database Error
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'User.email_verified' in 'where clause'

SQL Query: SELECT `User`.`id` FROM `database`.`users` AS `User` WHERE `User`.`email_verified` = 0 AND `User`.`email_token_expires` < '2016-07-26 09:54:14' GROUP BY `User`.`id`

有谁能告诉我这里出了什么问题?需要在现有数据库中创建哪些表来集成插件?我在CakeDC / Users的文档中找不到任何明确的指示。

问题是我之前实现的功能现在不起作用。它只显示我已经实现的插件功能(添加用户,登录等)。看来我的所有应用程序功能都被插件覆盖了。是因为管理员路由?我应该如何设置CakeDC / users管理插件的路由?我在我的应用程序中有UsersController(.php),我实现了添加,登录,编辑,删除功能。在CakeDC / Users插件中,它还有一个UsersController,其中实现了添加,登录等功能。它会造成任何冲突吗?

我需要将管理面板集成到用户管理和电子邮件确认功能(以确认注册)到我现有的应用程序,而不是覆盖其功能。有没有插件可以这样做?或者我必须自己实施?如果它适合我​​的上述情况,任何其他插件也是可以接受的。

1 个答案:

答案 0 :(得分:1)

对我来说,看起来你错过了路由的一些东西。因此,cakephp试图寻找一个实际调用方法的控制器。 您是否已将routes语句添加到您加载插件的bootstrap.php中?

CakePlugin::load('Users', array(
'routes' => true
));

尝试删除所有创建的控制器和方法,如果添加了上述路由,请检查Plugin / Users / Config文件夹中的routs.php文件。

正如我上一篇评论中所述用户表的sql:

CREATE TABLE IF NOT EXISTS `users` (
   `id` varchar(36) NOT NULL,
   `username` varchar(255) DEFAULT NULL,
   `slug` varchar(255) DEFAULT NULL,
   `password` varchar(128) DEFAULT NULL,
   `password_token` varchar(128) DEFAULT NULL,
   `email` varchar(255) DEFAULT NULL,
   `email_verified` tinyint(1) DEFAULT '0',
   `email_token` varchar(255) DEFAULT NULL,
   `email_token_expires` datetime DEFAULT NULL,
   `tos` tinyint(1) DEFAULT '0',
   `active` tinyint(1) DEFAULT '0',
   `last_login` datetime DEFAULT NULL,
   `last_action` datetime DEFAULT NULL,
   `is_admin` tinyint(1) DEFAULT '0',
   `group_id` int(11) DEFAULT NULL,
   `role` varchar(255) CHARACTER SET utf8 DEFAULT NULL
   `created` datetime DEFAULT NULL,
   `modified` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `users` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `email` (`email`), ADD KEY `BY_USERNAME` (`username`), ADD KEY `BY_EMAIL` (`email`);