양식 데이터를 처리하는 내 컨트롤러에 몇 가지 컨트롤러가 있습니다. 양식은 AJAX를 사용하며 JSON 인코딩 형식으로 오류를 반환하기 위해 특정 처리를해야하는 여러 컨트롤러에서 꽤 많은 메소드가 있습니다 (아래 코드 참조). 분명히 이것은 DRY가 아니며이 코드를 전 세계적으로 사용할 수있는 단일 도우미 함수로 옮겨야하지만이 코드를 실제로 사용해야하는 곳이 궁금합니다! 이 함수 (예 : Validation :: build_ajax_errors())를 포함하는 정적 도우미 클래스를 생성해야합니까, 아니면이 코드가 응용 프로그램 특정 형식을 사용하고 있고 사용하고있는 jQuery 유효성 검사 플러그인에 연결되어있는 정적 정적이어야합니다. 방법, 예를 들어, 양식 처리 컨트롤러에서 확장 내 주요 웹 사이트 컨트롤러에 저장된?글로벌 헬퍼 기능을 배치 할 위치에 대한 OOP/MVC 조언
//if ajax request, output errors
if (request::is_ajax())
{
//need to build errors into array form for javascript validation - move this into a helper method accessible globally
$errors = $post->errors('form_data/form_error_messages');
$i = 0;
$new_errors = array();
foreach ($errors as $key => $value)
{
$new_errors[$i][0] = '#' . $key;
$new_errors[$i][1] = $value;
$new_errors[$i][2] = "error";
$i++;
}
echo '{"jsonValidateReturn":' . json_encode($new_errors) . '}';
return;
}
안녕하세요, Jeremy, 당신은 함수의 "글로벌"특성에 대해 옳습니다. 양식 클래스에만 관련이 있습니다. 수퍼 클래스는 실제로 폼 클래스에 의해서뿐만 아니라 많은 다른 클래스들로 확장 된 메인 웹 사이트 컨트롤러입니다. 지금 제 코드를 살펴보면 제너릭 폼 클래스 컨트롤러와 웹 사이트 컨트롤러를 확장하고 특정 폼 기반 컨트롤러로 확장해야합니다. 분명히 모든 형태로 재사용 할 수있는 조각과 조각이 있으므로, 이것들은 제 기능을위한 좋은 장소가 될 일반 폼 컨트롤러로 리팩터링되어야합니다. – franko75
CodeIgniter는 기본적으로 여러분이 할 수있는 함수 라이브러리 인 'Helpers'를 사용합니다 의지대로로드하십시오. 함수는 전역 범위에 포함되며로드 될 때 어디서나 호출 할 수 있습니다. –