2012-11-06 4 views
1

요즘 나는 의 CakePHP에서 더 잘 작동하는 방법을 생각했습니다. 나는 특정으로,이 방법은 사용자의 스타일에 대한 링크를 반환

$this->AppUser->profile($data, $options, $attributes); 

방법이 users, 예를 들어, 내가 필요로하는 문맥에 의해 따라 링크와 다른 HTML 요소 일치를 만들기 위해 AppHelper를 사용하는 생각 CSS 클래스, 어쩌면 뭔가 라인이 :

<a class="user female" href="http://url/profiles/username">Username</a> 

내 문제는 데이터가 어떤 경우에 나는이 같은 배열이, 상황에 따라 다르게 구성되어 있습니다 :

$data['User']['id'] 
$data['User']['username'] 
$data['Profile']['user_id'] 
$data['Profile']['sex'] 
$data['Profile']['other'] 
을 다른 쿼리와 다른 기관과

그리고 다른 경우에, 나는이 있습니다

$data['User']['id'] 
$data['User']['username'] 
$data['User']['Profile']['user_id'] 
$data['User']['Profile']['sex'] 
$data['User']['Profile']['other'] 

그래서 내가 항상 같은 방식으로 구성해야하기 때문에 데이터의 계층 구조에서 뭔가 빠진 경우 이해 하시겠습니까?

그래서 항상 같은 방식으로 구성된 도우미에게 데이터를 보내야합니까?

상황에 따라 도우미가 데이터를 구문 분석하도록해야하므로 조건에 따라 데이터가있는 위치를 찾을 수 있습니까?

답변

3

꽤 일반적이며, 여러 단계 깊은 관련 항목을 찾은 결과입니다. 나는 보통 데이터를 표준화하는 Helper 메서드를 가지고있다.

필자는 항상 데이터를 도우미에게 보내고 필요할 때마다 도우미 내에서 구조를 변경합니다.

function normalizeUserData($data) { 
    foreach ($data['User'] as $field => $value) { 
    if (is_array($value)) { 
     // move it to the same level as User 
     $data[$field] = $value; 
     unset($data['User'][$field]); 
    } 
    } 
} 

이제는 사용자 키와 동일한 수준의 프로필 데이터를 항상 기대할 수 있습니다. 이 함수는 완벽하지는 않으며 재귀 적이 지 않지만 좋은 시작을 제공해야합니다.

관련 문제