이는 데이터 편집 양식을 생성하는데 사용할 수 있는 매우 유용한 구성요소입니다. MST Library 3.1의 매우 중요한 구성요소입니다. dbo 형식과 dbo 형식의 루프 중첩을 구현하고 이를 하나의 형식으로 제어할 수도 있습니다. dbo 지원 사용자 정의 위젯 구성 요소가 양식에 다시 중첩됩니다.
많은 PHP 프레임워크는 양식 생성을 함수로 작성합니다. 이는 이해할 수 있지만 양식을 생성할 때 사용자 함수를 주기적으로 호출하는 데 따른 성능 비용은 받아들일 수 없습니다. 컴파일된 코드의 성능은 다음과 같습니다. 루프 실행 기능보다 훨씬 높습니다.
게다가 대부분의 경우 우리는 데이터 개체의 구조를 알고 있으며 데이터 개체의 각 필드에 대한 값 유형을 정의했습니다. 실제로는 어떤 양식도 수동으로 작성하거나 코드를 사용하여 판단할 필요가 없습니다. , 텍스트 영역 등을 사용합니다.
- // 연산할 객체의 데이터
- // $target은 MST_DBO 기반 인스턴스여야 합니다
- if (!isset ($data ) || !is_object($data) || !$data 인스턴스of MST_DBO) {
- echo '$data는 MST_DBO 인스턴스가 아닙니다!';
- }
- else {
- // 가져오기 관련 모듈
- $model = get_class($data);
- // $columns 정의
- // 정의되지 않은 경우 MST_DBO 인터페이스에 따라 기본적으로 사용됩니다.
- if (!isset($columns) )
- $columns = $data->getFormColumns($data);
- if (empty($columns) || !is_array($columns)) {
- echo ' 양식 열 정의 취소!';
- }
- else {
-
- // 이 모듈의 접두사 생성
- if (!isset($prefix))
- $prefix = strtolower($ 모델);
- else
- $prefix = MST_String::tableize($prefix);
-
- if (!isset($id))
- $id = $prefix .
-
- if ( !isset($class))
- $class = $prefix . '-form';
-
- $errors = $data->getErrors();
-
- // 양식 구성 초기화
- // 제출된 작업 사용자 정의
- if (!isset($action))
- $action = $this->params->uri;
-
- // 메소드
- if (!isset($method))
- $method = 'post';
- else {
- $method = strtolower((string)$method);
- if ($method != 'get' && $method != 'post')
- $method = 'post';
- }
-
- // 업로드 여부
- if (!isset( $isUpload)) $isUpload = true;
-
- // 제출 버튼 텍스트 맞춤설정
- if (!isset($submitText)) $submitText = 'Submit';
-
- / / 라벨 부분의 너비를 사용자 정의
- if (!isset($headWidth)) $headWidth = 130;
- $headWidth = is_numeric($headWidth) && $headWidth > 0 ? >
- if (!isset($continueForm )) $continueForm = false;
-
-
- // 오버로드
- if (!isset($lineStart)) $lineStart = 1;
- ?>
-
- < ;?php
- }
- }
- ?>
复代码
- $this->widget('base/dbo_form', array(
- 'data' => $this->list,
- ));
-
复代码
- class Testimonial extends MST_DBO {
- protected static
- $columns = array(
- 'firstname' = > array('text','title' => '이름', 'require' => 1, 'min' => 1, 'max' => 32),
- '성' => array('text','title' => '성', 'require' => 1, 'min' => 1, 'max' => 32),
- 'avator ' => array('title' => 'Avator', 'max' => 256),
- 'age_group' => array('title' => '연령대', '필수' => 1),
- '비밀' => array('textarea','title' => '비밀', 'require' => 1, 'min' => 10, 'max' => 600),
- );
-
- 공용 함수 getFormColumns() {
- if (GB_PERSSIONS == Region::ROOT) {
- $columns['region_id'] = array(
- '선택',
- '제목' => '지역',
- 'optionsType' => '목록',
- '옵션' => , array('select' => 'id, name')),
- );
- }
- else {
- $columns['region_id'] = array(
- '숨김' ,
- '기본값' => GB_PERSSIONS,
- );
- }
- $columns = array_merge($columns,self::$columns);
- $columns['age_group'] = array('widget', 'base/age_group', array(
- 'prefix' => '평가',
- ), '제목' => '연령대');
- $columns['avator'] = array('widget', 'base/testmonial_upload', array(
- 'prefix' => '추천',
- ), ' title' => 'Avator');
-
- return $columns;
- }
-
- public function beforeCreate(& $data) {
- $data['created_at'] = time();
- }
-
- public function getAge() {
- $ageGroup = array(
- 0 => '--',
- 1 => '18세 미만 ',
- 2 => '19 ? 25',
- 4 => '36 ? 45' ? 55',
- 6 => '56 이상',
- );
- return isset($ageGroup[$this['age_group']]) ? $ageGroup[$this['age_group']] : $ageGroup[0];
- }
-
- 공개 함수 getAvator() {
- return empty($this['avator']) ? httpUri('images/avator.png') : httpUri($this['avator']);
- }
-
- // 这是对MST_DBO적find적 방법적 집합
- static public function find($args = array(), $params = null, $isArray = false) {
- if (defined('GB_PERSSIONS') && GB_PERSSIONS == Region::ROOT) {
- self::initFind( $args, $params, $isArray);
- return parent::find($args, $params, $isArray);
- }
- else {
- self::initFind($args, $ params, $isArray);
- if (isset($args['where'])) {
- $args['where'][0] .= ' AND 지역 ID = ?';
- $args ['where'][] = GB_PERSSIONS;
- }
- else {
- $args['where'] = array('region_id = ?', GB_PERSSIONS);
- }
- 부모 반환 ::find($args, $params, $isArray);
- }
- }
- }
-
-
复代码
|