2013-07-09 2 views
2

어디에서 어떻게 Joomla 3.0 사용자 정의 구성 요소에서 save 메서드를 재정의합니까?구성 요소에서 save() 메서드를 재정의하는 방법

현재 상황 :

사용자 지정 관리자 구성 요소.

테이블에 저장된 모든 사용자를 표시하는 목록보기가 있습니다. 하나의 항목 클릭 폼이로드되고 필드를 편집 할 수있는 상세보기로 이동합니다.

저장시 값이 데이터베이스에 저장됩니다. 그러나이 모든 작업은 훌륭합니다. 그러나 ...

save를 누르면 데이터베이스에 저장하기 전에 필드를 수정하고 싶습니다. 저장 기능을 재정의하려면 어떻게해야합니까? 나는이 포럼을 검색해이를 구현할 방법을 찾기 위해 조금 조용히 봤다. 간단한 예를 들어 주거나 ​​나를 올바른 방향으로 안내하는 사람은 누구입니까?

감사합니다.

답변

0

당신은 모델 파일의 prepareTable 기능 (관리자/구성 요소/yourComponent/모델/yourComponent.php)를 사용할 수 있습니다

protected function prepareTable($table) 
{ 
    $table->fieldname = newvalue; 
} 
+0

실제로 트릭을했습니다. :) 감사합니다! –

3

그냥 질문 자체에 대한 답을 알고 싶은 사람이 추가 - 명시 적으로 저장 함수를 겹쳐 쓰려는 경우이 기능이 작동합니다. 그러나 값을 조작하는 방법에 대한 실제 솔루션을 살펴보십시오! (위에서 언급 한 바와 같이) 준비 (즉위한 것입니다 Joomla Docs - Adding Backend Actions

0

모델의 prepareTable 테이블을 살균 : 여기

/** 
* save a record (and redirect to main page) 
* @return void 
*/ 
function save() 
{ 
    $model = $this->getModel('hello'); 

    if ($model->store()) { 
     $msg = JText::_('Greeting Saved!'); 
    } else { 
     $msg = JText::_('Error Saving Greeting'); 
    } 

    // Check the table in so it can be edited.... we are done with it anyway 
    $link = 'index.php?option=com_hello'; 
    $this->setRedirect($link, $msg); 
} 

자세한 내용 :

이 같은 컨트롤러에서 재정의 저장 전에 ). 당신이 우리에게 ID를 원하는 경우에는, 그러나, 당신은 컨트롤러에 postSaveHook 사용을 고려해야합니다 :

protected function postSaveHook($model, $validData) { 
    $item = $model->getItem(); 
    $itemid = $item->get('id'); 
} 

postSaveHook 저장 한 후 따라서 신규 ID의 사용하는 삽입을 허용,를 수행이라고합니다.

관련 문제