我正在学习Cake并且正在关注IBM's tutorial。我已经从蛋糕网站成功完成了博客教程
我的问题是Register
视图未显示。而不是显示表单,而是立即执行register()
操作,并且检查表单参数是否为空的条件总是失败,所以我总是找不到注册用户消息的失败。
ctp文件看起来像这样(它没有使用帮助程序):
<form action="/users/register" method="post">
<p>Please fill out the form below to register an account.</p>
<label>Username:</label><input name="username" size="40" />
<label>Password:</label><input type="password" name="password" size="40" />
<label>Email Address:</label><input name="email" size="40" maxlength="255" />
<label>First Name:</label><input name="first_name" size="40" />
<label>Last Name:</label><input name="last_name" size="40" />
<input type="submit" value="register" />
</form>
register()
操作是:
function register() {
if (!empty($this->params['form']))
{
if ($this->User->save($this->params['form']))
{
$this->flash('Your registration infomration was accepted.', '/users/register');
}
}
else
{
$this->flash('There was a problem with your registration', '/users/register');
}
}
答案 0 :(得分:1)
尝试:
function register() {
if (!empty($this->data)) {
$this->User->create();
if ($this->User->save($this->data)) {
$this->flash('Your registration infomration was accepted.', '/users/register');
} else {
$this->flash('There was a problem with your registration', '/users/register');
}
}
}
最大的区别在于使用$this->data
代替$this->params[form]
并添加$this->User->create();
。 else语句也应该是if(用户保存)flash保存,否则flash不保存。