谁一开始就是大神?

cform使用问题:只显示button

model:User.php

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of User
 *
 * @author Administrator
 */
class User extends CActiveRecord {

    //静态类
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    //表名
    public function tableName() {
        return '{{user}}';
    }

    //cform配置文件
    public function getFMConfig() {
        return array(
            'elements' => array(
                'name' => array('type' => 'text', 'maxlength' => 80),
                'password' => array('type' => 'password', 'maxlength' => 80),
            ),
            'buttons' => array(
                'button' => array('type' => 'submit', 'label' => '提交'),
            ),
        );
    }

}
--------------------------------
controller UserController.php

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of UserController
 *
 * @author Administrator
 */
class UserController extends Controller{
    public function actionRegister(){
        $user = new User();
        $form = new CForm($user->getFMConfig(), $user);

        $this->render('register',array('form'=>$form));
    }

    
}

——————————–

view :register.php

<?php echo $form ?>

———————————————————————-

现象:只显示提交按钮。不显示,input框

如果在elemtns属性中设置label 属性,也能显示,就是不显示正常input框

原理参见 源代码 CForm类的renderElement方法片段, 如果没有设置则不会进行elements中每一个element的渲染;而button的显示条件不一样,所以会显示出来。
需要在model类中加入rules方法,如:
就可以显示出来了
或者这样:
都是为了让元素具有可见性。

赞(0) 打赏
未经允许不得转载:菜鸟之家 » cform使用问题:只显示button

评论 抢沙发

登录

找回密码

注册