0

Is it possible to get the block name of the current template?

For example I added a block to catalog_product_view.xml:

<block class="Magento\Contact\Block\ContactForm" name="firstname" template="Company_Contact::forms/partials/fields/firstname.phtml"> <arguments> <argument name="required" xsi:type="boolean">0</argument> </arguments> </block> 

How can I get the name of the block (firstname) inside the template .phtml file?

I tried:

<?php $name = $block->getName(); // Output -> empty Expected: firstname 

4 Answers 4

1

I figured it out:

All Methods are defined here: vendor\magento\framework\View\Element\AbstractBlock.php

It works like this:

<?php $name = $block->getNameInLayout(); // Output -> firstname 
0

This code class="Magento\Contact\Block\ContactForm" means that in your template you have access to all methods of the class vendor/magento/module-contact/Block/ContactForm.php or Magento\Framework\View\Element\Template

In that class you have no getName method.

What do you need? the name entered in the form? in this case you need to use javascript. The name of the current user (if he is logged in)? You need to extend the class or add a viewModel

1
0

You need to create a model that will represent your table and will hold your class also, then you need to have resource model and collections, then in your layout file using collections and the method defined in your block of $block->getName() will execute will give you the correct result.

0

Layout file:

<block class="Magento\NegotiableQuote\Block\Quote\Info" name="quote.status" template="Magento_NegotiableQuote::quote/status.phtml"/> 

So you can use $blockname = $block->getNameInLayout() for fetching the "name" assigned to the block in layout file, e.g comment.status.

Or you can use var_dump(get_class($block)); to fetch the class of the block.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.