There are two parts of this question . 1 . how can we add data to database using factory not through object manager . 2 . how can we find exactly what is the error in the code (dev mode is active , var/logs all files are checked). I wrote some code i know there is an issue in the code but i am unable to see this in magento logs . for the sake of adding data to database i am doing this . module is complete and working , in template file code is .
<?php foreach($block->getItemsResults() as $items) : ?> <p><?php echo $items->getName() ?> : <?php echo $items->getDescription(); ?> </p> <?php endforeach; ?> <form method="post" action="<?php echo $block->getFormData() ?>"> <label>Add Name Here</label> <input type="text" name="name" > <input type="submit" name="submit" value="submit"> </form>
and this is the block file .
<?php namespace Mastering\SampleModule\Block; use Magento\Framework\View\Element\Template; use Mastering\SampleModule\Model\ResourceModel\Item\Collection; use Mastering\SampleModule\Model\ResourceModel\Item\CollectionFactory; class Hello extends Template { private $cf; private $messageManager; public function __construct(Template\Context $context , CollectionFactory $collectionfactory , \Magento\Framework\Message\ManagerInterface $messageManager , array $data = [] ){ $this->cf = $collectionfactory ; parent::__construct($context,$data); $this->messageManager=$messageManager; } public function getItemsResults(){ return $this->cf->create()->getItems(); } public function getFormData(){ $post=$this->getRequest()->getPost(); if(!empty($post)){ $name=$post['name']; $this->messageManager->addSuccessManager("data saved"); } } }
this is the code . what can i do to add data to database and how caan i find exact errors list . right now error is messageManager . but there is no way where i can see the error .
Solved! Go to Solution.
Hello @samair
Please find your both question answer here:
1. Add data to database using factory: with this post sharing reference code for your help, please follow below:
<?php namespace [Vendor_Name]\[Extension_name]\Setup; use [Vendor_Name]\[Extension_name]\Model\[Model_Name]; use [Vendor_Name]\[Extension_name]\Model\[Model_Name]Factory; use Magento\Framework\Module\Setup\Migration; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; class InstallData implements InstallDataInterface { private $modelFactory; public function __construct([Model_Name]Factory $modelFactory) { $this->modelFactory = $modelFactory; } public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { $modeldata = [ [ 'fieldname1' => 'value1', 'fieldname2' => 'value2' ], [ 'fieldname1' => 'value3', 'fieldname2' => 'value4' ] ]; foreach ($modeldata as $data) { $this->modelFactory->create()->setData($data)->save(); } } }
2. Error in the code: as you already in dev mode it should display error on the screen/ logs but if you still facing issue please add this code in index.php:
error_reporting(E_ALL); ini_set('display_errors', 1);
or there is a place for this. In bootstrap.php
#ini_set('display_errors', 1);
Hope both problems will solve.
Hello @samair
Please find your both question answer here:
1. Add data to database using factory: with this post sharing reference code for your help, please follow below:
<?php namespace [Vendor_Name]\[Extension_name]\Setup; use [Vendor_Name]\[Extension_name]\Model\[Model_Name]; use [Vendor_Name]\[Extension_name]\Model\[Model_Name]Factory; use Magento\Framework\Module\Setup\Migration; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; class InstallData implements InstallDataInterface { private $modelFactory; public function __construct([Model_Name]Factory $modelFactory) { $this->modelFactory = $modelFactory; } public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { $modeldata = [ [ 'fieldname1' => 'value1', 'fieldname2' => 'value2' ], [ 'fieldname1' => 'value3', 'fieldname2' => 'value4' ] ]; foreach ($modeldata as $data) { $this->modelFactory->create()->setData($data)->save(); } } }
2. Error in the code: as you already in dev mode it should display error on the screen/ logs but if you still facing issue please add this code in index.php:
error_reporting(E_ALL); ini_set('display_errors', 1);
or there is a place for this. In bootstrap.php
#ini_set('display_errors', 1);
Hope both problems will solve.