These are my php files.
magento\app\code\Cosmo\Basemodule\Model\DatiInterface.php
<?php
namespace Cosmo\Basemodule\Model;
interface DatiInterface
{
}
magento\app\code\Cosmo\Basemodule\Model\Dati.php
namespace Cosmo\Basemodule\Model;
use Magento\Framework\Model\AbstractModel;
use Magento\Framework\DataObject\IdentityInterface;
class Dati extends AbstractModel implements DatiInterface, IdentityInterface
{
protected function _construct()
{
$this->_init('Cosmo\Basemodule\Model\ResourceModel\Dati');
}
public function getIdentities()
{
//todo
}
}
magento\app\code\Cosmo\Basemodule\Model\ResourceModel\Dati.php
<?php
namespace Cosmo\Basemodule\Model\ResourceModel;
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
class News extends AbstractDb
{
/**
* Define main table
*/
protected function _construct()
{
$this->_init('exampletable', 'entity_id');
}
}
magento\app\code\Cosmo\Basemodule\Model\ResourceModel\Dati\Collection.php
<?php
namespace Cosmo\Basemodule\Model\ResourceModel\Dati;
use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
class Collection extends AbstractCollection
{
/**
* Define model & resource model
*/
protected function _construct()
{
$this->_init(
'Cosmo\Basemodule\Model\Dati',
'Cosmo\Basemodule\Model\ResourceModel\Dati'
);
}
}
And then block where i inject the factory
magento\app\code\Cosmo\Basemodule\Block\Main.php
<?php
namespace Cosmo\Basemodule\Block;
use Magento\Framework\View\Element\Template\Context;
use Cosmo\Basemodule\Model\DatiFactory;
class Main extends \Magento\Framework\View\Element\Template
{
protected $_datiFactory;
public function __construct(Context $context, DatiFactory $datiFactory)
{
parent::__construct($context);
$this->_datiFactory = $datiFactory;
}
public function _prepareLayout()
{
echo 'pippo<br \>';
$dati = $this->_datiFactory->create();
var_dump($dati->getCollection());
exit();
}
}
I tried in many ways but create() fails and then nothing is executed.
Best Answer
you clearly missed the interface for model
Cosmo\Basemodule\Model\DatiInterface.php
and your model will be
magento\app\code\Cosmo\Basemodule\Model\Dati.php