मैं उस वर्ग या आसानी से विशेषता को कैसे ओवरराइड कर सकता हूं जो xml में निर्दिष्ट है?


9

हमारे पास एक विशेष क्षेत्र है जो पहली बार रिकॉर्ड जोड़ते समय केवल इनपुट की अनुमति दे सकता है, इसलिए मैं सोच रहा हूं कि क्या एक वर्ग जोड़ना संभव है, या readonlyफॉर्म लोड होने के बाद किसी बिंदु पर निर्दिष्ट करना है, लेकिन (निश्चित रूप से) , इससे पहले कि यह उपयोगकर्ता को प्रदान किया जाता है।

फॉर्म से लोड करते समय models\forms\myform.xml, वर्ग (एस) और आसानी से अपेक्षित रूप में लोड किए जा रहे हैं। यहां बताया गया है कि वर्तमान में इस क्षेत्र का प्रतिपादन किया जा रहा है, जो पुस्तकालयों \ 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

जूमला कोर लेख के संपादन की तुलना करें। व्यवस्थापक - 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');
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.