Xml formunda belirtilen sınıfı veya salt okunur özniteliği nasıl geçersiz kılabilirim?


9

Yalnızca ilk kez kayıt eklerken girişe izin verebilecek belirli bir alanımız var, bu yüzden bir sınıf eklemenin veya readonlyform yüklendikten sonra bir noktada belirtmenin mümkün olup olmadığını merak ediyorum , ancak (elbette) , kullanıcıya sunulmadan önce.

Bir form yüklenirken models\forms\myform.xml, sınıf (lar) ve salt okunur gibi özellikler beklendiği gibi yükleniyor. \ Joomla \ form \ form.php kütüphanelerini kullanan, şu anda alanın oluşturulma şekli:

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

Yanıtlar:


3

Evet, bunu yapabilirsin.

"Planlar" kavramına sahip bir bileşene sahibiz, farklı erişim düzeyleri için aynı görünümü kullanır, ancak alanları kullanıcı gruplarına bağlı olarak erişilebilir veya değil yapar.

Dolayısıyla, bir planı "Çalıştırabilecek" ancak düzenleyemeyen kullanımlar için, bir grup alanı "kapatıyoruz". Alan türüne bağlı olarak, bu birkaç alan özniteliğinin ayarlanması anlamına gelebilir, ör.

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

Bu nedenle, alanınızın ne olduğuna bağlı olarak, myReadOnlyCodeyukarıda gösterildiği gibi bir veya daha fazla özellik ayarlayarak yapabilirsiniz, örneğin, yalnızca standart bir metin girişi ise:

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

2

Joomla çekirdek makalesi düzenlemesini karşılaştırın. Yönetici - article.php - yöntem getForm.

"Arka kapı" güncellemesini önlemek için filtreye dikkat edin.

    $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');
    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.