2013-05-20 4 views
0

내 친구의 CakePHP의 프로젝트 중 하나에서, 그녀의 동료는이 같은 체크 박스 썼다 :cakephp에서 일반 텍스트 유형과 체크 상자 사이에서 입력을 변경하려면 어떻게해야합니까?

https://pbs.twimg.com/media/BKt5D1lCAAA1ZfJ.jpg

을 그리고 그는이 방법으로 그것을 만든 :

echo $this->Form->input('accept_twins', array('label' => 'Accept twins?')); 

는 어떻게 될 수!!!? !

https://pbs.twimg.com/media/BKuAunRCEAAVAWs.jpg

어떻게 할 수 !!!!!!!!!!!!! :

나는 fieldname param 'accept_twins'에서 아무것도 변경하거나 다른 ctp 파일을 복사하는 경우,이에 관해서 !! 그런 규칙이 있든 없습니까?

실제로 나는 nomarl 체크 박스를 만드는 법을 알고 있습니다. 어떻게 이런 일이 일어날 수 있는지 이해할 수 없습니까? 누군가는 그것을 알고 있습니까?

妈 蛋! 累 感 不 爱! 蠢 哭 了!

답변

1

formhelper가 DB 필드 유형에 기초하여 사용하는 입력 방식을 추측. 체크 박스가 표시되면 accept_twins 필드는 특정 모델의 테이블에 TINYINT (1) 유형임을 나타냅니다. 필드 이름을 변경하면 db의 해당 필드 유형에 따라 입력 유형이 변경되거나 필드가 db가 아닌 경우 기본적으로 입력 유형 텍스트가 표시됩니다.

+0

'add.ctp'에서'search.ctp'로 복사 할 때 입력 유형 텍스트가되는 이유는 무엇입니까?'insert' 전에 db에서 쿼리하고'select' 전에는하지 않습니까? – fallsleep

+0

삽입 또는 선택 전에 db 쿼리가 없습니다. 모델 인스턴스가 생성되면 모델 스키마가 가져오고 캐시됩니다. 'search.ctp'의 위치와 호출하는 컨트롤러 액션에 따라 폼 도우미가 모델을 추측 할 수 없기 때문에 텍스트 타입 입력을 얻을 수 있습니다. 모델 이름을'search.ctp'에서 Form-> create() 호출의 첫 번째 매개 변수로 지정하면 해당 필드에 대한 체크 상자를 가져와야합니다. – ADmad

+0

나는 당신이 CakePHP 매뉴얼을 읽고 기존의 케이크 앱을 무작위로 땜질하지 않고 바란다. :) – ADmad