我的主页上有两种不同的表单,一种用于注册用户,另一种用于登录。两种形式都指向相同的模型,但指向不同的行为。问题是如果你提交任何一个表单,它也会在另一个表单上引发操作,所以如果我试图登录它会在控制器中引发注册操作,就像我试图注册一样,例如
我已经检查了this solution但是对于这么简单的东西来说似乎过于复杂,更不用说它会使我的模型文件夹混乱,除了单个动作之外几乎没用的额外模型。
编辑:我在Auth下没有我的项目的这一部分,我在Auth下有管理路由和管理部分设置,但在非管理部分我正在使用我自己的会话处理和用户验证。以下是我的表单的代码:
这是注册表格:
echo $this->Form->create('Fonyker', array('action' => 'add'));
echo $this->Form->input('username', array(
'div' => array(
'class' => 'span-8'
),
'class' => 'input-text long',
'id' => 'FonykerUsernameRegister',
'label' => array(
'class' => 'inlined',
'text' => ''
),
'placeholder' => 'Username',
'onsubmit' => 'return false;'
));
echo $this->Form->input('email', array(
'div' => array(
'class' => 'span-8'
),
'class' => 'input-text long',
'label' => array(
'class' => 'inlined',
'text' => ''
),
'placeholder' => 'Email',
'onsubmit' => 'return false;'
));
echo $this->Form->input('password', array(
'div' => array(
'class' => 'span-8'
),
'class' => 'input-text long',
'id' => 'FonykerPasswordRegister',
'label' => array(
'class' => 'inlined',
'text' => ''
),
'placeholder' => 'Password',
'onsubmit' => 'return false;'
));
echo $this->Form->input('name', array(
'div' => array(
'class' => 'span-8'
),
'class' => 'input-text long',
'label' => array(
'class' => 'inlined',
'text' => ''
),
'placeholder' => 'Name',
'onsubmit' => 'return false;'
));
?>
<div class="span-8 required">
<label for="FonykerBirthdate" class="inlined">From</label>
<input id="FonykerBirthdate" type="text" onsubmit="return false;" placeholder="Birthdate" name="data[Fonyker][birthdate]" class="datepicker input-text long" enabled="false">
</div>
<?php
$options = array('M' => 'M', 'F' => 'F');
$attributes = array(
'empty' => 'Gender',
'class' => 'input-combo span-8'
);
echo $this->Form->select('gender', $options, NULL, $attributes);
echo $this->Form->submit('',array(
'class' => 'signup-button',
'id' => 'signup-button'
));
echo $this->Form->end();
?>
登录表单:
echo $this->Form->create('Fonyker', array('action' => 'login'));
echo $this->Form->input('username', array(
'div' => array(
'class' => 'span-3'
),
'class' => 'input-text short',
'id' => 'FonykerUsernameLogin',
'label' => array(
'class' => 'inlined',
'text' => ''
),
'placeholder' => 'Username'
));
echo $this->Form->input('password', array(
'div' => array(
'class' => 'span-3',
),
'class' => 'input-text short',
'id' => 'FonykerPasswordLogin',
'label' => array(
'class' => 'inlined',
'text' => ''
),
'placeholder' => 'Password'
));
echo $this->Form->submit('',array(
'div' => array(
'class' => 'span-1'
),
'class' => 'login-button',
));
echo $this->Form->input('Fonyker.remember', array(
'div' => array(
'class' => 'span-3',
),
'type' => 'checkbox',
'label' => array(
'text' => 'Remember me',
'style' => 'margin-left:-10px;'
),
'value' => 'yes',
'class' => 'span-1'
));
echo $this->Html->link(__("Forgot it?", TRUE), array('controller' => "pages", 'action' => "recover_password" ), array('class' => 'span-2'));
echo $this->Form->end();
?>
答案 0 :(得分:0)
最后的问题仅仅是由于我的表单的命名,你必须确保表单和字段的名称不重叠,如果它们来自同一个控制器,并确保正确结束表单