yii 프레임 워크를 사용하면 chtml :: activeetxtfield ()를 사용하여 표시하기 전에 속성을 처리하는 올바른 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2437045

  •  19-09-2019
  •  | 
  •  

문제

보기 에이 코드 라인이 있다고 가정 해 봅시다.

<?php echo CHtml::activeTextField($model,'start_time'); ?>

start_time은 Unix 타임 스탬프입니다. 보기로 표시하면 날짜 ()와 같은 함수를 적용 할 수 있습니다. 위의 코드 줄을 사용하여 양식으로 표시 할 때 포맷을 어디에 적용해야합니까? (이 타임 스탬프/날짜 사례는 특별 할 수도 있지만 데이트가 아니었다면 어떻게 진행할 것인지에 관심이 있고 함께 일하고 싶습니다.

"데이터베이스의 값"<> "다른보기에서 값의 다른 표현.

감사합니다 =)

도움이 되었습니까?

해결책

우리는 일반적으로 확장됩니다 CActiveRecord::afterFind() 데이터를 사람이 읽을 수있는 형식으로 변환합니다 CActiveRecord::beforeValidate() 다시 변환합니다.

항상 두 개 이상의 형식을 사용할 수있는 경우 YII의 getters and setters에게 시도해 볼 수 있습니다.

둘 다

  • CActiveRecord::getFieldName() 그리고
  • CActiveRecord::setFieldName($value)

당신이 넣을 수 있습니다 CHtml::activeTextField($model, 'fieldName') 당신의 견해에서. 분명히, 당신은 해당 방법에서 기본 데이터베이스 열을 조작합니다 (분명히 당신의 경우 start_time이라고 함). 도움이 되었기를 바랍니다.

다른 팁

chtml :: activeTextfield 대신 chtml :: textfield를 사용했습니다.

<?php echo CHtml::textField(get_class($model).'[start_time]', date('Y-m-d H:i', $model->start_time)); ?>

그것이 장기적으로 작동하는지 볼 것입니다.

날짜 방법을 바로 적용하는 대신 $ model-> getSomeProcessedData ()와 같은 SMTH를 가질 수 있습니다. 시원한.. :

imo, afterfind ()는 검색 속도를 늦추게하며 Validate ()가 디스플레이 데이터에서 어떤 역할을 수행한다고 생각하지 않습니다. start_time 값의 getter를 무시하기 위해 모델 클래스에 getttart_time ()을 추가하는 것이 좋습니다. 서식 코드는 데이터를 표시해야 할 때만 실행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top