I have created a form using UI component, This form has a select dropdown which displays option related to current entity id if form is in edit mode and all options if a new entity is being added by form.
UI Form
<fieldset name="EntityFields">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true"></item>
</item>
</argument>
<!-- This field represents form id and is hidden -->
<field name="question_id">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="dataType" xsi:type="string">text</item>
<item name="formElement" xsi:type="string">input</item>
<item name="source" xsi:type="string">questionmanager_entity</item>
<item name="visible" xsi:type="boolean">false</item>
</item>
</argument>
</field>
<field name="question_type">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">Ricky\QuestionManager\Model\UiForm\TypeList\Options</item>
<item name="config" xsi:type="array">
<item name="component" xsi:type="string">Ricky_QuestionManager\js\form\element\options</item>
<item name="dataScope" xsi:type="string">question_type</item>
<item name="dataType" xsi:type="string">text</item>
<item name="default" xsi:type="string">0</item>
<item name="formElement" xsi:type="string">select</item>
<item name="label" xsi:type="string" translate="true">Question Type</item>
<item name="notice" xsi:type="string" translate="true">Question will use Field type on store front according to selected Question type.</item>
<item name="required" xsi:type="boolean">true</item>
<item name="sortOrder" xsi:type="number">30</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">true</item>
</item>
</item>
</argument>
</field>
</fieldset>
I want to pass current question id to following class (* if form is in edit mode)
<item name="options" xsi:type="object">Ricky\QuestionManager\Model\UiForm\TypeList\Options</item>
*Edit This is my option class
class Options implements OptionSourceInterface
{
/**
* Product collection
*
* @var \Ricky\QuestionManager\Model\ResourceModel\Question\Collection
*/
protected $collection;
/**
* Construct
*
* @param CollectionFactory $collectionFactory
*/
public function __construct(
CollectionFactory $collectionFactory
) {
$this->collection = $collectionFactory->create();
}
/**
* Get options
*
* @return array
*/
public function toOptionArray()
{
foreach ($this->collection as $type) {
$optionList[] = [
'label' => $type->getTitle(),
'value' => $type->getQuestionId(),
'is_active' => $type->getIsDeleted()?false:true,
];
}
//echo "<pre>";print_r($optionList);exit;
return $optionList;
}
}
Thankyou for you suggestion ans answer. :)