2014-04-22 4 views
0

하였습니다. TV는 모든 활성 사용자와 자동으로 채워지고 ID는 출력됩니다.Modx 플러그인 : 자원의 설정 createdby 내가 목록 상자 TV의 값을 해당 TV의 <em>onDocFormSave</em> 설정에 맞게 문서의 <em>createdby</em> 필드를 설정하는 플러그인을 만들려고하고 TV 값

나는 플러그인을 위해 다음과 같은 코드를 가지고 있지만, 리소스를 저장하려고하면 단순히 멈추고 저장하지 않는다.

switch ($modx->event->name) { 
    case 'onDocFormSave': 

     $created_by = $resource->getTVValue('setCreatedBy') 

     if ($resource->get('createdby') != $created_by) { 
      $modx->resource->set('createdby', $created_by)); 
     } 
    break; 
} 
+0

입니다. 포럼에서 질문을 따랐습니다. 누가 궁금해하는 경우에 문제는 전환이었습니다. 이벤트 이름은'onDocFormSave'가 아닌'OnDocFormSave'입니다. – OptimusCrime

답변

1

테스트되지 않은 : setCreatedBy은 목록 상자 TV의 이름입니다.

설정이 리소스에서 수행되어야하며 Modx 클래스를 통해 수행되지 않아야합니다.

$resource->set('createdby', $created_by); // You also have a) too much in your code. 

검사 한 docs.

+0

나는 그 문제를 해결했다.) 그리고 당신이 제안한 줄로 바꿨지 만, 슬프게도 자원을 저장하고 자원에 대한 _createdby_ 필드를 변경하지 않을 때 여전히 슬그머니 걸려있다. –

+0

'$ resource-> save();' – Vasis

+0

@Vasis - 플러그인에'save();'가 필요 없습니다. 그것은 나중에 상관없이 발생합니다. – OptimusCrime

0

$ resource-> set ...을 생략하고 플러그인을 실행하면 통과할까요? 루프를 일으키는 지 궁금합니다. 예를 들어 $ resource-> set은 다른 onDocFormSave를 트리거합니다. error.log 서버에 액세스 할 수 있습니까? 그것은 무엇이든 무너질 것입니다.

0

Modx 포럼에 참여한 사람들은 나를 위로 할 수있었습니다.

@EVAL return $modx->runSnippet('Peoples',array('tpl'=>'peoplesTpl','outputSeparator'=>'||','active'=>'1')); 

이를 : 참고로

switch ($modx->event->name) { 
case 'OnDocFormSave': 

    $created_by = $resource->getTVValue('setCreatedBy'); 

    if (!empty($created_by) && $resource->get('createdby') != $created_by) { 
     $resource->set('createdby', $created_by); 
     $resource->save(); 
    } 
break;} 

, 나는 이름과 Modx 사용자의 사용자 ID의 수집과 선택 박스를 TV에 배치 처리 방법은 사람들이 바인딩 @EVAL에 니펫을 사용하는 것이 었습니다 사소한 더럽고 느린 방법이지만 Modx 리소스의 표준 필드가되도록 요청한 것은 GitHub