이 글은 주로 thinkPHP 자동 확인, 자동 추가, 폼 오류 문제 분석을 소개하고 있으며, thinkPHP 자동 완성 메커니즘의 관련 사용법과 주의사항도 케이스 형태로 분석해 놓았습니다.
I 최근에 다른 프로젝트를 진행하면서 thinkphp를 사용하여 검증을 작성하고 싶었는데 며칠 동안 울었습니다. 처음에는 토큰 오류였는데 자동으로 추가된 내용이 무효화되었습니다.
테스트하고 검색해보니 create() 메소드에는 원래 두 개의 매개변수가 있다는 것을 알게 되었습니다.
첫 번째 매개변수는 모두가 알고 있는 데이터 매개변수이고, 두 번째 매개변수는 숨겨진 $type 매개변수입니다. 매개변수는 무언가를 제어하는 데 사용됩니까? ?
코드 복사 코드는 다음과 같습니다.
//$type = $type?$type!empty($data[$this->getPk()])?self::MODEL_UPDATE:self:: MODEL_INSERT);
이 문장을 곰곰이 생각해 본 결과, 이 숨겨진 매개변수가 이 데이터베이스의 특정 작업을 나타내는 데 사용된다는 것을 발견했습니다.
$type 값은 삽입 작업의 경우 1, 업데이트 작업의 경우 0이며 기본적으로 있습니다. 시스템이 자동으로 인식할 수 있으므로 이 매개변수에 값을 할당할 필요가 없습니다.
기본 키가 데이터베이스에 의해 자동으로 추가된다면 괜찮을 것입니다. 수동으로 추가하면 비극이 될 것입니다. 기본값은 데이터 작업을 업데이트하는 것이기 때문입니다.
다음은 제가 작성한 자동 완성 코드입니다
protected $_auto = array( array('password','sha1',1,'function'), array('date', 'time', 1, 'function'), );
1을 보셨나요? 1은 데이터가 삽입될 때만 함수가 실행된다는 뜻입니다. 추신: 이것 때문에 오랫동안 고민을 했습니다.
데이터를 입력하고 싶을 때 다음과 같이 쓰면 됩니다:
create($_POST,1)//【插入数据】 create($_POST,2)//【更新数据】
create 메소드에 이 작업이 삽입 작업임을 직접 알려주면 잘못된 자동 완성 타이밍과 잘못된 자동 완성 문제를 해결할 수 있습니다.
그런데 이렇게 작성하지 말라고 하면 어쩔 수 없군요. create() 함수를 사용하면 기본적으로 데이터 업데이트가 된다는 점만 기억하시면 됩니다. Model 메소드를 작성할 때.
thinkphp 자동 완성 그림
보세요,
protected $_auto = array( array('password','sha1',2,'function'), array('date', 'time', 2, 'function'), //把1换成2就好了。 );
문제는 해결될 수 있습니다.
요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
관련 권장 사항:
위 내용은 thinkPHP 자동검증, 자동추가, 폼오류 문제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!