0

我不明白 yii 中的表单提交是如何工作的。请帮助我...

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>';
}

表单V.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',
        ),
    ),
);

当我单击验证好但未重定向到“网站/发送”时...

另一个问题是为什么将模型传输到新的CForm...为什么是这样的方法?如何使用它?

4

1 回答 1

0

如果您检查模型目录中的 LoginForm 类,您会发现它包含 2 个必需的公共变量。必需的变量是用户名和密码。由于您已在表单构建器中注释掉密码元素,您将不会通过以下 if 语句。

if($form->submitted('login') && $form->validate()){

您被重定向到新表单的原因是因为它是这样编码的。一旦 submit() 和 validate() 函数返回 true,您将被重定向到网站/发送操作,而不是新的登录表单。

有关 CForm 类的更多信息,请阅读http://www.yiiframework.com/doc/guide/1.1/en/form.builder

于 2013-11-11T13:14:40.960 回答