2013-10-16 1 views
0

Joomla 3.0 구성 요소를 만들고 있는데 질문이 있습니다.Joomla의 JForms가 편집시 읽기 전용으로 만듭니다.

일부 필드는 편집 모드에서 읽기 전용으로 만들고 싶습니다. 그들은 창조에 착수해야하며 편집 불가능해야합니다.

나는이 일을 가능하게하는 3 가지 방법을 알고있다.

  1. 설정 필드 읽기 전용 읽기 전용
을 분야를 만들기 위해 자바 스크립트 배경
  • 로드 필드가 읽기 전용
  • 사용을 정의 우리가 편집 모드에있는 경우 다른 형태로

    방법 2 (또는 더 간단하면 하나)를 선호하지만이 방법을 수행하는 방법을 모르겠습니다. 편집 모드로 들어가면 getForm() 함수에서 어떻게 알 수 있습니까? 어떤 제안 :)?

    편집 : 순간, 나는 내가 좋아하지 않는 방법 3을 사용하고 있습니다 :

    <?PHP if ($this->item->id > 0) { ?> 
    <script type="text/javascript"> 
    var text_box = document.getElementById('jform_name'); 
    text_box.setAttribute('readonly', 'readonly'); 
    </script> 
    <?PHP } ?> 
    
  • +0

    (당신이 그것을 사용하는 경우) 당신은 JForm 형태의 XML을 decalration에 = "true"를 읽기 전용으로 추가 할 수 있어야 – WooDzu

    답변

    1

    당신이 다음 사이에 동기화를 유지하기 위해 가지고 나는 "읽기 전용"양식을 작성 권하고 싶지 않다 다른 버전을 업데이트하면 기본적으로 DRY이 나옵니다.

    런타임시 setFieldAttribtue()을 사용하여 JForm의 다양한 속성을 설정할 수 있습니다.

    com_admin/models/profile.php

    public function getForm($data = array(), $loadData = true) 
    { 
        // Get the form. 
        $form = $this->loadForm('com_admin.profile', 'profile', array('control' => 'jform', 'load_data' => $loadData)); 
        if (empty($form)) 
        { 
         return false; 
        } 
        if (!JComponentHelper::getParams('com_users')->get('change_login_name')) 
        { 
         $form->setFieldAttribute('username', 'required', 'false'); 
         $form->setFieldAttribute('username', 'readonly', 'true'); 
         $form->setFieldAttribute('username', 'description', 'COM_ADMIN_USER_FIELD_NOCHANGE_USERNAME_DESC'); 
        } 
    
        return $form; 
    } 
    

    우리의 구성 요소 중 일부에서 우리는 단지 readonly 속성을 설정하지하지만 우리는 또한 class을 설정

    은 찾을 수 있습니다 핵심 구성 요소의 많은 예를 들어 양식이 수정되는 그래서 우리는 필드를 적절하게 스타일링 할 수 있습니다.

    $form->setFieldAttribute('name', 'class', 'readonly'); 
    $form->setFieldAttribute('name', 'readonly', 'true'); 
    
    +0

    이는 것을 잘 모르고있다. 그러나 마지막 질문 하나가 남아 있습니다. 제품을 편집하거나 만들 것인지 어떻게 결정할 수 있습니까? – Xavjer

    +0

    그것은 $ this-> getState ('profile.id')입니다 (Profile = 2 번째 parm of loadForm, id = 필드 값). id를 반환하고 설정되어 있다면 편집하고 있습니다. – Xavjer

    관련 문제