新的 CakePHP 用户在这里。我一直无法找到解决此问题的方法。
我想将登录表单作为元素嵌入到现有页面中。我正在使用 CakeDC 用户插件。目标是在页面中嵌入登录表单,然后在他们登录时更新页面上的一些内容而不刷新页面。在我们开始担心 AJAX 和 SecurityComponent 之前,我想至少让表单作为一个元素嵌入到其他页面上。
对于初学者,我尝试直接将“/Views/Users/login.ctp”的内容复制并粘贴到元素中。这给了我一个“未定义变量“$Model”的警告,所以我将模型硬编码为“Users.User”(因为我假设访问插件内部模型的符号是“plugin.model”,就像他们在手册)。失败并显示错误消息 Error: Users.usersController could not be found。
因此,我调整了表单以将“用户”作为模型而不是 $model 并且请求现在被黑洞。如果我禁用安全组件,我可以成功登录。这不是一个令人满意的解决方案(我的意思是,我可以选择不验证表单或将“登录”定义为解锁操作,但如果我这样做,那么我可能还没有为登录启用安全性,对吧? )。
这是 app/Plugin/Users/View/Elements/login.ctp 的代码:
<div class="users index">
<h2><?php echo __d('users', 'Login'); ?></h2>
<fieldset>
<?php
echo $this->Form->create('User', array(
'action' => 'login',
'id' => 'LoginForm'));
echo $this->Form->input('User.email', array(
'label' => __d('users', 'Email')));
echo $this->Form->input('User.password', array(
'label' => __d('users', 'Password')));
echo '<p>' . __d('users', 'Remember Me') . $this->Form->checkbox('remember_me') . '</p>';
echo '<p>' . $this->Html->link(__d('users', 'I forgot my password'), array('action' => 'reset_password')) . '</p>';
echo $this->Form->end(__d('users', 'Submit'));
?>
</fieldset>
以下是调用该元素的视图的代码:
<div id="loginform">
<?php echo $this->element('Users.login'); ?>
</div>
如果我将元素代码复制并粘贴到 View 中(例如 in apps/Plugin/Users/View/Users/login.ctp
),无论 Security 是打开还是关闭,它都可以正常工作,因此我怀疑在表单或 Security 调用方面进行了一些胡闹。
任何想法或帮助将不胜感激。