symfony 이전작업에 대한 메모

2010. 2. 18. 19:3199. 정리전 - IT/17. Symfony 퉷퉷

지금 개발중인 symfony에 대한 메모

1. 심포니로 개발된 프로젝트를 복사 또는 저장소로부터 checkout시 주의점
   심포니는 cache디렉토리에 웹에서 실행될 소스를 보관한다.
   그 소스는 자유롭게 읽기,쓰기가 되어야 하므로 아래와 같이 실행하여 권한을 부여한다.
   .../sfproject 에서 ./symfony fix-perms 실행

2. 심포니는 .htaccess 없이 굴러가지 않는다
   .../web 에 .htaccess 설정 파일이 없으면 악세스되지 않는다.
  
3. validation 기능의 확장
   심포니의 validation 기능은 많은 부분이 자동으로 이루어지기 때문에
   거꾸로 복잡한 validation기능을 이용하려면 커스텀 클래스를 만들어야 한다.

    ※validation의 흐름
       1. 웹의 필드 입력을 끝낸 후 form의 action이 실행됨 예를들어 action=a/b/c
           a:어플리케이션, b:모둘명, c:함수명업
       2. .../apps/a/modules/b/validation/c.yml 실행
           fields:
            필드명:
                myCheck:
                   필드명_error:
        3. 2번에서 valdation에러가 발생하면 자동으로 actions.class.php의 입력필드 상태로 되돌림
            정상이면 다음으로
        4. actions.class.php의 handleError() 메소드 실행
             에러면 되돌림, 정상이면 다음으로
        5. actions.class.php의 excuteC()실행

      ※myCheck 의 파일은 다음과 같이 작성
통상의 위치 : .../sfproject/apps/a/lib/myCheck.class.php
내용
<?php
/**
 * 数値のバリデータ
 */
class myMadoriHeyaKazuValidator extends sfValidator
{
        public function initialize($context, $parameters = null)
        {
                // Initialize parent
                parent::initialize($context);

                // Set parameters
                $this->getParameterHolder()->add($parameters);

                return true;
        }

        public function execute(&$value, &$error)
        {
                $request          = sfContext::getInstance()->getRequest();
                $madori_type      = $request->getParameter('madori_type');
                $madori_type      = $request->getParameter('madori_type');
                $madori_heya_kazu = $request->getParameter('madori_heya_kazu');

                $title = sfConfig::get('app_col_title_'.'madori_heya_kazu');
                if ($madori_type == '01') {
                        if ($madori_heya_kazu) {
                                $error = '間取がワンルームの場合は'.$title.'を空
白にして下さい。';
                                return false;
                        }
                } else {
                        if ($madori_heya_kazu || $madori_heya_kazu == '0') {
                                if(1 > $madori_heya_kazu || 99 < $madori_heya_ka
zu){
                                        $error = $title.'は1~99の半角整数を入力>
して下さい。';
                                        return false;
                                }
                        } else {
                                $error = $title.'を入力して下さい。';
                                return false;
                        }
                }
                return true;
        }
}