xml 형식으로 지정된 클래스 또는 읽기 전용 특성을 재정의하려면 어떻게해야합니까?


9

레코드를 처음 추가 할 때만 입력을 허용하는 특정 필드가 있으므로 클래스를 추가하거나 readonly양식이로드 된 후 어느 시점에서 지정할 수 있는지 궁금합니다. (물론) 사용자에게 렌더링되기 전에

에서 양식을로드 할 때 models\forms\myform.xml클래스 및 읽기 전용과 같은 속성이 예상대로로드됩니다. library \ joomla \ form \ form.php를 사용하는 필드가 현재 렌더링되는 방법은 다음과 같습니다.

echo $this->form->getInput('myReadOnlyCode')

답변:


3

예, 당신은 이것을 할 수 있습니다.

우리는 "계획"이라는 개념을 가진 구성 요소를 가지고 있으며, 다른 액세스 수준에 대해 동일한보기를 사용하지만 사용자 그룹에 따라 필드에 액세스 할 수 있는지 여부를 결정합니다.

따라서 계획을 "실행"할 수 있지만 편집 할 수없는 용도의 경우 여러 필드를 "끄기"로 설정합니다. 필드 유형에 따라 여러 필드 속성을 설정해야합니다. 예 :

$this->form->setFieldAttribute('name', 'class', 'readonly');
$this->form->setFieldAttribute('name', 'readonly', 'true');
$this->form->setFieldAttribute('description', 'class', 'readonly');
$this->form->setFieldAttribute('description', 'disabled', 'true');
$this->form->setFieldAttribute('description', 'type', 'text');
$this->form->setFieldAttribute('published', 'class', 'readonly');
$this->form->setFieldAttribute('published', 'readonly', 'true');
$this->form->setFieldAttribute('publish_up', 'class', 'readonly');
$this->form->setFieldAttribute('publish_up', 'readonly', 'true');
$this->form->setFieldAttribute('publish_up', 'format', '%Y-%m-%d %H:%M:%S');
$this->form->setFieldAttribute('publish_up', 'filter', 'user_utc');
$this->form->setFieldAttribute('publish_down', 'class', 'readonly');
$this->form->setFieldAttribute('publish_down', 'readonly', 'true');
$this->form->setFieldAttribute('publish_down', 'format', '%Y-%m-%d %H:%M:%S');
$this->form->setFieldAttribute('publish_down', 'filter', 'user_utc');

따라서 myReadOnlyCode필드가 무엇인지에 따라 위와 같이 하나 이상의 속성을 설정 하여 필드를 수행 할 수 있습니다 (예 : 표준 텍스트 입력 인 경우).

$this->form->setFieldAttribute('myReadOnlyCode', 'class', 'readonly');
$this->form->setFieldAttribute('myReadOnlyCode', 'readonly', 'true');

2

Joomla 핵심 기사 편집을 비교하십시오. 관리자-article.php-메소드 getForm.

"백도어"업데이트를 방지하기 위해 필터에주의하십시오.

    $user = JFactory::getUser();

    // Check for existing article.
    // Modify the form based on Edit State access controls.
    if ($id != 0 && (!$user->authorise('core.edit.state', 'com_content.article.' . (int) $id))
        || ($id == 0 && !$user->authorise('core.edit.state', 'com_content'))
    )
    {
        // Disable fields for display.
        $form->setFieldAttribute('featured', 'disabled', 'true');
        $form->setFieldAttribute('ordering', 'disabled', 'true');
        $form->setFieldAttribute('publish_up', 'disabled', 'true');
        $form->setFieldAttribute('publish_down', 'disabled', 'true');
        $form->setFieldAttribute('state', 'disabled', 'true');

        // Disable fields while saving.
        // The controller has already verified this is an article you can edit.
         $form->setFieldAttribute('featured', 'filter', 'unset');
        $form->setFieldAttribute('ordering', 'filter', 'unset');
         $form->setFieldAttribute('publish_up', 'filter', 'unset');
         $form->setFieldAttribute('publish_down', 'filter', 'unset');
         $form->setFieldAttribute('state', 'filter', 'unset');
    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.