1

I am new to magento and learning to create a module in magento.

Fatal error: Method Magento\Ui\TemplateEngine\Xhtml\Result::__toString() must not throw an exception, caught TypeError: Argument 1 passed to Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider::searchResultToOutput() must implement interface Magento\Framework\Api\Search\SearchResultInterface, instance of Chirpn\ProductSerialNumber\Model\ResourceModel\ProductSerialNumber\Collection given, called in E:\wamp64\www\utt\vendor\magento\framework\View\Element\UiComponent\DataProvider\DataProvider.php on line 284 in E:\wamp64\www\utt\vendor\magento\module-ui\Component\Wrapper\UiComponent.php on line 0

my di.xml file is as below :

<virtualType name="Chirpn\ProductSerialNumber\Model\ResourceModel\ProductSerialNumber\Grid\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
 <arguments>
 <argument name="mainTable" xsi:type="string">wk_grid_records</argument>
 <argument name="resourceModel" xsi:type="string">Chirpn\ProductSerialNumber\Model\ResourceModel\ProductSerialNumber</argument>
 </arguments>
</virtualType>
<type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
 <arguments>
 <argument name="collections" xsi:type="array">
 <item name="productserialnumber_record_productserialnumber_list_data_source" xsi:type="string">Chirpn\ProductSerialNumber\Model\ResourceModel\ProductSerialNumber\Collection</item>
 </argument>
 </arguments>
</type>
<type name="Chirpn\ProductSerialNumber\Logger\Handler">
 <arguments>
 <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
 </arguments>
</type>
<type name="Chirpn\ProductSerialNumber\Logger\Logger">
 <arguments>
 <argument name="name" xsi:type="string">customLogHandler</argument>
 <argument name="handlers" xsi:type="array">
 <item name="system" xsi:type="object">Chirpn\ProductSerialNumber\Logger\Handler</item>
 </argument>
 </arguments>
</type>
Amit Naraniwal
1,3081 gold badge11 silver badges20 bronze badges
asked Feb 27, 2019 at 7:16
1

1 Answer 1

0

You Need To create Collection File For Grid

<?php
namespace Vendorname\modulename\Model\ResourceModel\ProductSerialNumber\Grid;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\Framework\Api\Search\SearchResultInterface;
use Magento\Framework\DB\Adapter\AdapterInterface;
use Magento\Framework\Data\Collection\Db\FetchStrategyInterface;
use Magento\Framework\Data\Collection\EntityFactory;
use Magento\Framework\Event\ManagerInterface as EventManagerInterface;
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
use Magento\Framework\Api\Search\AggregationInterface;
use Psr\Log\LoggerInterface;
use vendorname\modulename\Model\ResourceModel\ProductSerialNumber\Collection as ProductSerialNumberCollection;
class Collection extends ProductSerialNumberCollection implements SearchResultInterface
{
 /**
 * Aggregations
 *
 * @var AggregationInterface
 */
 protected $aggregations;
 /**
 * Collection constructor.
 * @param EntityFactory $entityFactory
 * @param LoggerInterface $logger
 * @param FetchStrategyInterface $fetchStrategy
 * @param EventManagerInterface $eventManager
 * @param $mainTable
 * @param $eventPrefix
 * @param $eventObject
 * @param $resourceModel
 * @param AdapterInterface|null $connection
 * @param AbstractDb|null $resource
 * @param string $model
 */
 public function __construct(
 EntityFactory $entityFactory,
 LoggerInterface $logger,
 FetchStrategyInterface $fetchStrategy,
 EventManagerInterface $eventManager,
 $mainTable,
 $eventPrefix,
 $eventObject,
 $resourceModel,
 AdapterInterface $connection = null,
 AbstractDb $resource = null,
 $model = 'Magento\Framework\View\Element\UiComponent\DataProvider\Document'
 )
 {
 parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager, $connection, $resource);
 $this->_eventPrefix = $eventPrefix;
 $this->_eventObject = $eventObject;
 $this->_init($model, $resourceModel);
 $this->setMainTable($mainTable);
 }
 /**
 * @return AggregationInterface
 */
 public function getAggregations()
 {
 return $this->aggregations;
 }
 /**
 * @param AggregationInterface $aggregations
 * @return SearchResultInterface|void
 */
 public function setAggregations($aggregations)
 {
 $this->aggregations = $aggregations;
 }
 /**
 * @param null $limit
 * @param null $offset
 * @return array
 */
 public function getAllIds($limit = null, $offset = null)
 {
 return $this->getConnection()->fetchCol($this->_getAllIdsSelect($limit, $offset), $this->_bindParams);
 }
 /**
 * @return \Magento\Framework\Api\Search\SearchCriteriaInterface|null
 */
 public function getSearchCriteria()
 {
 return null;
 }
 /**
 * Set search criteria.
 *
 * @param SearchCriteriaInterface $searchCriteria
 * @return $this
 * @SuppressWarnings(PHPMD.UnusedFormalParameter)
 */
 public function setSearchCriteria(SearchCriteriaInterface $searchCriteria = null)
 {
 return $this;
 }
 /**
 * Get total count.
 *
 * @return int
 */
 public function getTotalCount()
 {
 return $this->getSize();
 }
 /**
 * Set total count.
 *
 * @param int $totalCount
 * @return $this
 * @SuppressWarnings(PHPMD.UnusedFormalParameter)
 */
 public function setTotalCount($totalCount)
 {
 return $this;
 }
 /**
 * Set items list.
 *
 * @param \Magento\Framework\Api\ExtensibleDataInterface[] $items
 * @return $this
 * @SuppressWarnings(PHPMD.UnusedFormalParameter)
 */
 public function setItems(array $items = null)
 {
 return $this;
 }
}

di.xml

From

<arguments>
 <argument name="mainTable" xsi:type="string">wk_grid_records</argument>
 <argument name="resourceModel" xsi:type="string">Chirpn\ProductSerialNumber\Model\ResourceModel\ProductSerialNumber</argument>
</arguments>

To

 <arguments>
 <argument name="collections" xsi:type="array">
 <item name="wk_grid_records" xsi:type="string">Chirpn\ProductSerialNumber\Model\ResourceModel\ProductSerialNumber\Grid\Collection</item>
 </argument>
 </arguments>
answered Feb 27, 2019 at 8:37

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.