1

I need to display message to admin in front of some custom product attribute, For example "Donation" fields which take decimals, I need to display message to admin that say's 20% is a minimum donation for this product.

This 20% will be different for other product, for some product it may be 15% or 10%. I have custom module that stores donation percentages to database.

My question is from database how Can I display message [like field comment] with dynamic message content.

1 Answer 1

1

You cannot set it from the database.
You will have to code for it.
You can make use of the after_element_html feature that the form builder offers.
So declaring a field like this:

$fieldset->addField('identifier_here', 'type_here', array( 'name' => 'name_here', 'label' => 'Label here', 'required' => true|false, 'after_element_html' => 'Some text after the element', ) ) 

will make your text Some text after the element appear after the element. It can be anything, even some html or javascript.
But there is a catch. The product add/edit form is not built using code as shown above. You cannot control each field. The fields are generated based on the attributes.
But you have the event adminhtml_catalog_product_edit_prepare_form that is dispatched for every tab that contains product attributes.
You can try to observe it like this (untested code):

public function prepareEditForm($observer) { $form = $observer->getEvent()->getForm(); //let's say you want to add some message for the attribute with code `donation` $donationElement = $form->getElement('donation'); if ($donationElement) { $message = ...determine the string to display.... $donationElement->setAfterElementHtml($message); } return $this; } 

There is also an other approach. Each attribute supports a custom form renderer. This feature basically allows you to have the input be rendered using your own class and your own phtml file. This seams like a more complicated approach, but if you want to give it a try check this answer. It's for a different problem, but the approach is the same.

4
  • Which event I need to use in this case? Commented Jun 10, 2015 at 12:11
  • I have created my custom product attribute by admin backend option Manage Attribute, So may get after_element_html attribute from there? Commented Jun 10, 2015 at 12:13
  • As I explained, you cannot get the after_element_html from the db (unless you add a column to the table and implement that logic, but it won't be dynamic). You can use the adminhtml_catalog_product_edit_prepare_form event as I explained. Commented Jun 10, 2015 at 12:30
  • Your example worked exactly for my question, But I have set note attribute instead of setAfterElementHtml. $donationElement->setNote($message); Thank You Marius. Commented Jun 11, 2015 at 11:45

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.