I have created a new table 'custom_table' i need to render the values in a custom template. How to get the values of that table ?
-
you have to configure the resource model, please look at this: mageplaza.com/magento-2-module-development/… then you load a collection to get the data, after that you display them in your phtml– PЯINCƎCommented Jul 26, 2018 at 14:35
-
How did you see the result? Because I just followed the same procedure but I couldn't able to see any output.– SivaCommented Jan 31, 2019 at 7:31
1 Answer
Render the values from custom table in a custom template, Follow bellow steps.
Create Model and ResourceModel in your custom module for collection to get the table's data.
/Your_Magento/app/code/Test/Welcome/Model/Welcome.php
<?php
namespace Test\Welcome\Model;
class Welcome extends \Magento\Framework\Model\AbstractModel
{
public function _construct()
{
$this->_init('Test\Welcome\Model\ResourceModel\Welcome');
}
}
/Your_Magento/app/code/Test/Welcome/Model/ResourceModel/Welcome.php
<?php
namespace Test\Welcome\Model\ResourceModel;
class Welcome extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
public function _construct()
{
$this->_init('test_welcome_welcome', 'id');
}
}
/Your_Magento/app/code/Test/Welcome/Model/ResourceModel/Welcome/Collection.php
<?php
namespace Test\Welcome\Model\ResourceModel\Welcome;
class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
{
protected function _construct()
{
$this->_init('Test\Welcome\Model\Welcome','Test\Welcome\Model\ResourceModel\Welcome');
}
}
/Your_Magento/app/code/Test/Welcome/view/frontend/templates/view.phtml
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$model=$objectManager->create('Test\Welcome\Model\Welcome');
$datacollection=$model->getCollection();
echo "<table border=1><tr align=center><th>Id</th><th>Fist Name</th><th>Last Name</th></tr>";
foreach ($datacollection as $data) {
echo "<tr align=center>";
echo "<td>".$data->getId()."</td>";
echo "<td>".$data->getFirstname()."</td>";
echo "<td>".$data->getLastname()."</td>";
echo "</tr>";
}
echo "</table>";
?>
You can also get data from block using factory method, Calling block from phtml $datacollection = $block->getCollection();
I hope this will useful for you.:)
-
This method is working perfectly. But how do we filter result by ID? i tried $datacollection = $model->getCollection->addFieldToFilter('id', $my_id), but it didn't work. Commented Sep 11, 2018 at 15:05
-
3