我正在尝试将cakePHP的内置验证功能用于我的注册/登录页面。
<?php
class User extends AppModel
{
var $name = 'User';
var $validate = array(
'name' => VALID_NOT_EMPTY,
'password' => VALID_NOT_EMPTY,
'email_id' => VALID_EMAIL
);
}
我没有单独的视图文件用于注册或登录。我在主控制器中有应用程序的注册和登录代码,在单个index.ctp文件中有视图。如果注册或登录有效,则页面将重定向到主控制器的主页。
class UsersController extends AppController
{
var $name = 'Users';
var $helpers = array('Html', 'Form' );
function register()
{
if (!empty($this->data))
{
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your registration information was accepted.');
$this->redirect('/main/home');
}
}
}
}
Index.ctp
<p>Please fill out the form below to register an account.</p>
<?php
echo $form->create('User', array('action' => 'register'));
echo $form->input('name');
echo $form->input('email_id');
echo $form->input('password');
echo $form->end('Register');
?>
<h3>Login</h3>
<?php
echo $form->create('User',array('action'=>'login'));
echo $form->input('email_id');
echo $form->input('password');
echo $form->end('Login');
?>
这就是为什么,不显示自定义错误消息。因为,如果我有一个单独的寄存器模块视图文件,那么我会收到自定义消息。
但我不想要单独的注册视图文件和单独的登录视图文件。我想在主控制器的索引文件中同时具有这两个功能。你能帮帮我吗?
编辑1
如果我使用渲染,这就是我在浏览器中获得的内容。
您的注册失败。
未找到
错误:在此服务器上找不到请求的地址'/ users / register'。
这是主控制器中的寄存器功能:
function register()
{
if (!empty($this->data))
{
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your registration information was accepted.');
$this->render('home');
}
else
{
$this->Session->setFlash('Your registration failed.');
$this->render('index');
}
}
}
答案 0 :(得分:0)
可能存在冲突,因为您正在创建两个使用相同模型的表单。如果您注释掉登录表单,那么会显示错误消息吗?