ฉันจะแทนที่คลาสหรือคุณลักษณะแบบอ่านอย่างเดียวที่ระบุในรูปแบบ xml ได้อย่างไร


9

เรามีเขตข้อมูลเฉพาะที่สามารถอนุญาตให้ป้อนข้อมูลเมื่อเพิ่มระเบียนเป็นครั้งแรกเท่านั้นดังนั้นฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะเพิ่มคลาสหรือระบุreadonlyบางจุดหลังจากโหลดแบบฟอร์มแล้ว แต่ (แน่นอน) ก่อนที่จะแสดงผลให้กับผู้ใช้

เมื่อโหลดแบบฟอร์มmodels\forms\myform.xmlแอตทริบิวต์เช่น class (es) และแบบอ่านอย่างเดียวจะถูกโหลดตามที่คาดไว้ นี่คือวิธีที่ฟิลด์กำลังถูกเรนเดอร์ซึ่งใช้ libraries \ 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.