2013-03-24 2 views
0

프로젝트 관리를 위해 CakePHP 2.3으로 작성했습니다. 모든 것이 잘 작동합니다. 하지만 이제는 사용자가 스스로 등록 할 수있는 등록 기능을 갖고 싶습니다. 그게 문제가 아닙니다. 그러나 Cake는 사용자 이름 자체를 설정합니다.CakePHP 2 - 사용자 입력을 소문자로 변환하기

2 개의 입력란이 있습니다. "first_name"and "last_name" 글쎄, 나는 두 필드를 소문자로 PHP 함수 "strtolower"로 변환하고 그 사이에 포인트를 넣으면 결과가 사용자 이름이됩니다. 예를 들어 "john.doe"

내 질문은이 문제를 어떻게 해결할 수 있는가입니다.

필드가 비어있어 함수가 자신의 일을 할 수 없기 때문에 PHP 함수를 "레지스터"뷰에 넣을 때 도움이되지 않는다고 생각합니다.

어떻게 입력이 내 예와 같이 사용자가 포맷 될 수 있도록 내가 다시 그것을 얻을 않으며, 별도의 데이터베이스 필드이 점에서 나를 도울 수

에 저장됩니다? 미리 감사드립니다.

답변

0

사용자를 저장하기 전에 컨트롤러에 있어야합니다. 이 같은

예를 들어 뭔가 : 당신이 인식하지하는 경우 또한

public function register() { 

    // ... 

    $username = strtolower($this->request->data['User']['first_name'] . "." . $this->request->data['User']['last_name']); 
    $this->request->data['User']['username'] = $username; 

    if ($this->User->save($this->request->data)) { 
    // ... 
    } 
} 

는 케이크 또는 MVC 디자인 패턴이 어떻게 작동하는지, 당신에게 부탁을하고 CakePHP의 Cookbook를 참조하십시오.

+1

모델 내에서 'beforeValidate()'콜백 내에서 이러한 종류의 작업을 수행하는 것이 가장 좋습니다. 이렇게하면 사용자 입력이 항상 * 형식화됩니다. 설명서는 [Model :: beforeValidate()] (http://book.cakephp.org/2.0/en/models/callback-methods.html#beforevalidate)에서 확인하십시오. – thaJeztah