2011-09-10 4 views
0

이 경우 폼 유효성 검증과 관련하여 응용 프로그램 피드백을 처리하고 싶습니다. 사용하여, 나는 컨트롤러 모델 검증 확인이 작업을 수행하려면CakePHP SET error => false 모든 양식

// VALIDATE 
      if ($this->Event->validates($this->data)) 
      { 
       // SAVE 
        $this->Event->create(); 
        if ($this->Event->saveAll($this->data, array('validate' => false))) 
        { 
         $this->Session->setFlash('Evenimentul a fost salvat!', 'flash_admin_success'); 
         $this->redirect(array('action' => 'index', 'admin' => true)); 
        } else { 
         $this->Session->setFlash('Evenimentul nu a putut fi salvat. Va rugam sa incercati din nou!', 'flash_admin_error'); 
        } 
       //////// 
       $errors = 'O EROARE'; 
       $this->set(compact('errors')); 
      } 
      else 
      { 
       // GET ERRORS to display it nicely :) 
        $errors = $this->Event->invalidFields(); 
        $flash = ''; 
        foreach($errors as $error) 
        { 
         $flash .= $error."<br />"; 
        } 
        $this->Session->setFlash($flash, 'flash_admin_error'); 

      } 

나는 =이> 거짓 '오류'를 사용하여 양식 필드 오류를 제거 할 수있는 방법이 있다는 것을 알고 있지만, 내가이 작업을 설정하려면 따라서 모든 양식의 모든 필드에 적용됩니다. 개체 자체에 해당하는 설정 방법이 있어야하며 누군가 내게 말해 주면 감사 할 것입니다. Thaks a lot!

+0

왜 그렇게 복잡해? 당신은 sth 케이크에 대한 많은 오버 헤드를 이미 상자 밖으로 커버하는 것 같습니다 ... – mark

+0

난 그냥 유효성 검사 오류 printig을 사용자 정의하고 싶습니다 - 좀 더 명확하게, 나는 그 시점에서 어떤 점에서 jQueryUI를 구현하고 싶습니다. "멋진"상자에 넣을 수 있습니다. 위의 코드는 최종적인 것이 아닙니다. 당신의 의지 조언을위한 Thx. 나는 당신이 말한 것처럼 내가하는 많은 경우가 있다는 것에 shure입니다. 시간이 지남에 따라 더 효율적으로되기를 희망합니다. 내가 처음에 물어 본 것을 어떻게하는지 안다면, 미리 감사드립니다! – Michael

답변

0

편집 : 실제로 오류 출력을 사용하지 않지만 오류를 숨길 수 있습니다. webroot/css/cake.generic.css로 이동 을 선택자 div.error-message에 추가하십시오. 그것이 내가 생각할 수있는 것을 달성하는 가장 간단한 방법입니다.

+0

답변 해 주셔서 감사합니다! 방금 제안한 것처럼 _inputDefaults를 설정하려고했지만 뷰 형식으로 덮어 쓰지 않아도 아무 효과가 없습니다. 그것이 당신을 위해 일했다면, 나는 의심 스럽지만 뭔가 잘못했을 수도 있습니다. 그렇게 할 수있는 다른 방법을 생각할 수 있다면, 나는 감사한다! – Michael

+0

예, 마침내 제가해야 할 일이 두려웠습니다. 지원해 주셔서 감사합니다. – Michael

0

단일 속성을 재정의하는 극단적 인 접근 방식처럼 보일 수도 있지만 핵심 FormHelper를 확장하여이 기능을 구현할 수 있습니다. 이 모든 FormHelper 인스턴스에 대한 안 팜의 original suggestion 기본을 만들 수 있습니다 : 이제

// app/views/helpers/app_form.php 
App::import('Helper', 'Time'); 
class AppFormHelper extends FormHelper { 

    public $_inputDefaults = array('error' => false); 

} 

을 CakePHP는 1.3-IS로 사용하려면이 도우미를 참조하는 응용 프로그램을 통해 "AppForm"를 사용하는 것 지금부터 (예 : $this->AppForm->input()). CakePHP 2.0은이를 극복하기 위해 도우미 앨리어싱을 도입하지만, 지금은 "Form"을 계속 사용하기 위해 약간의 속임수를 사용해야합니다. 내가 찾은 블로그 게시물 중 하나는 backport the functionality이고 다른 하나는 helper to do it입니다. 나는 개인적으로 아무 문제없이 다음을 사용 :

// app/views/app.php 
class AppView extends View { 

    function &_loadHelpers(&$loaded, $helpers, $parent = null) { 
     $return = parent::_loadHelpers($loaded, $helpers, $parent); 
     # rename App helpers (ie. AppHtml -> Html) 
     foreach ($return as $helperName => $helper) { 
      if (substr($helperName, 0, 3) === 'App') { 
       $newHelperName = substr($helperName, 3); 
       $return[$newHelperName] = $return[$helperName]; 
      } 
     } 
     # done 
     return $return; 
    } 

} 

위의 새로운 생성 된 클래스를 사용하려면, 단지 추가하여 AppController에 다음

// app/app_controller.php 
class AppController extends Controller { 

    public $helpers = array(/*...*/, 'AppForm'); 

    public $view = array('App'); 

} 
+0

대단히 감사합니다, Deizel! 이것은 내가 필요로하는 것보다 훨씬 더 많지만 실제로는 좋은 정보입니다! 다시, 당신의 시간 동안 thx! – Michael

관련 문제