我不明白表格提交是如何工作的。请帮助我...
public function actionHome() {
$model = new LoginForm;
$form = new CForm('application.views.website.formV', $model);
//protected/views/website/formV.php.
if($form->submitted('login') && $form->validate()){
echo 'nig';
$this->redirect(array('website/send'));
}
else {
$this->render('login', array('form'=>$form));
}
echo '<h1>Hello</h1>';
echo '<div class="form">';
echo $form;
echo '</div>';
}
FormV.php
return array(
'title'=>'Label title',
'elements'=>array(
'username'=>array(
'type'=>'text',
'maxlength'=>32,
),
'<div class="djada"></div>'
,
/*
'password'=>array(
'type'=>'password',
'maxlength'=>10,
),
*
*/
'rememberMe'=>array(
'type'=>'checkbox',
)
),
'buttons'=>array(
'login'=>array(
'type'=>'submit',
'label'=>'Enter',
),
),
);
当我点击验证好但没有重定向到'website / send'...
另一个问题是为什么将模型传输到新的CForm ...为什么这样的方法呢? 如何使用它?
答案 0 :(得分:0)
如果在models目录中检查LoginForm类,您会发现它包含2个必需的公共变量。必需的变量是用户名和密码。由于您在表单构建器中注释掉了密码元素,因此不会传递以下if语句。
if($form->submitted('login') && $form->validate()){
您被重定向到新表单的原因是因为它以这种方式编码。一旦提交()和validate()函数返回true,您将被重定向到网站/发送操作而不是新的登录表单。
有关CForm类的更多信息,请阅读http://www.yiiframework.com/doc/guide/1.1/en/form.builder。