Làm cách nào tôi có thể ghi đè lên lớp hoặc thuộc tính chỉ đọc được chỉ định trong biểu mẫu xml?


9

Chúng tôi có một trường cụ thể chỉ có thể cho phép nhập liệu khi thêm bản ghi lần đầu tiên, vì vậy tôi tự hỏi liệu có thể thêm một lớp hay chỉ định readonlytại một số điểm sau khi biểu mẫu đã được tải, nhưng (tất nhiên) , trước khi nó được hiển thị cho người dùng.

Khi tải một biểu mẫu từ models\forms\myform.xml, các thuộc tính như lớp (es) và chỉ đọc sẽ được tải như mong đợi. Đây là cách mà trường hiện đang được kết xuất, sử dụng các thư viện \ j Joomla \ form \ form.php:

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

Câu trả lời:


3

Có bạn có thể làm điều này.

Chúng tôi có một thành phần có khái niệm "Gói", nó sử dụng cùng một chế độ xem cho các cấp truy cập khác nhau, nhưng làm cho các trường có thể truy cập được hay không tùy thuộc vào nhóm người dùng.

Vì vậy, đối với những mục đích sử dụng có thể "Chạy" một kế hoạch nhưng không chỉnh sửa nó, chúng tôi sẽ "tắt" một loạt các trường. Tùy thuộc vào loại trường, điều này có thể có nghĩa là đặt một số thuộc tính trường, ví dụ:

$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');

Vì vậy, tùy thuộc vào myReadOnlyCodelĩnh vực của bạn, bạn có thể làm gì bằng cách đặt một hoặc nhiều thuộc tính như được hiển thị ở trên, ví dụ: nếu đó chỉ là một kiểu nhập văn bản tiêu chuẩn:

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

2

So sánh chỉnh sửa bài viết cốt lõi Joomla. Quản trị viên - article.php - phương thức getForm.

Hãy chú ý đến bộ lọc để ngăn cập nhật "cửa sau".

    $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');
    }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.