Oui, vous pouvez le faire.
Nous avons un composant qui a un concept de "Plans", il utilise la même vue pour différents niveaux d'accès, mais rend les champs accessibles ou non selon les groupes d'utilisateurs.
Donc, pour les utilisations qui peuvent "exécuter" un plan sans le modifier, nous désactivons un tas de champs. Selon le type de champ, cela peut signifier définir plusieurs attributs de champ, par exemple
$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');
Ainsi, en fonction de votre myReadOnlyCode
champ, vous pouvez le faire en définissant un ou plusieurs des attributs comme indiqué ci-dessus, par exemple s'il ne s'agit que d'une entrée de texte standard:
$this->form->setFieldAttribute('myReadOnlyCode', 'class', 'readonly');
$this->form->setFieldAttribute('myReadOnlyCode', 'readonly', 'true');