Sie müssen drei Dateien erstellen , um die Sammlung von einem benutzerdefinierten Modul abzurufen
1) Modell, 2) Ressourcenmodell, 3) Sammlung
Namespace: Prinz
Modul: Hallo
Tabelle: Hallo
1) Erstellen Sie die Hello.php-Modelldatei unter
App / Code / Prince / Helloworld / Model / Hello.php
<?php
namespace Prince\Helloworld\Model;
use Magento\Framework\Model\AbstractModel;
class Hello extends AbstractModel
{
/**
* Define resource model
*/
protected function _construct()
{
$this->_init('Prince\Helloworld\Model\ResourceModel\Hello');
}
}
2) Erstellen Sie nun Hello.php ResourceModel unter
app / code / Prince / Helloworld / Model / ResourceModel / Hello.php
<?php
namespace Prince\Helloworld\Model\ResourceModel;
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
class Hello extends AbstractDb
{
/**
* Define main table
*/
protected function _construct()
{
$this->_init('hello', 'id'); //hello is table of module
}
}
3) Erstellen Sie nun die Collection.php Collection-Datei unter
app / code / Prince / Helloworld / Model / ResourceModel / Hallo / Collection.php
<?php
namespace Prince\Helloworld\Model\ResourceModel\Hello;
use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
class Collection extends AbstractCollection
{
/**
* Define model & resource model
*/
protected function _construct()
{
$this->_init(
'Prince\Helloworld\Model\Hello',
'Prince\Helloworld\Model\ResourceModel\Hello'
);
}
}
Jetzt können Sie Ihre Sammlung im Index.php
Controller testenapp/code/Prince/Helloworld/Controller/Index/Index.php
<?php
namespace Prince\Helloworld\Controller\Index;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Prince\Helloworld\Model\HelloFactory;
class Index extends Action
{
protected $_modelHelloFactory;
public function __construct(
Context $context,
HelloFactory $modelHelloFactory
) {
parent::__construct($context);
$this->_modelHelloFactory = $modelHelloFactory;
}
public function execute()
{
$resultPage = $this->_modelHelloFactory->create();
$collection = $resultPage->getCollection(); //Get Collection of module data
var_dump($collection->getData());
exit;
}
}
Wenn Sie eine Sammlung in einer Vorlage mithilfe einer Blockdatei erhalten möchten
Weitere vier Dateien, die Sie hinzufügen und erstellen müssen
1. Blockieren Sie die Datei
2. Layoutdatei
3. Controller-Datei
4. Templarte-Datei
Blockdatei erstellen Hello.php
namespace vendorName\ModuleName\Block\Index;
use Magento\Framework\App\RequestInterface;
use vendorName\ModuleName\Model\Hello;
class Hello extends \Magento\Framework\View\Element\Template
{
protected $helloModelFactory;
protected $request;
public function __construct(
\Magento\Catalog\Block\Product\Context $context,
Hello $helloModelFactory,
RequestInterface $request,
array $data = []
) {
parent::__construct($context, $data);
$this->_helloModelFactory = $helloModelFactory;
$this->_request = $request;
}
/**
* Preparing global layout
*
* @return $this
*/
protected function _prepareLayout() {
parent::_prepareLayout();
$this->pageConfig->getTitle()->set(__('Display Collection'));
return $this;
}
public function getHello()
{
$collection = $this->_helloModelFactory->getCollection();
return $collection;
}
}
Oder erstellen Sie die Layoutdatei routName_controllername_index.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="vendorName\ModuleName\Block\Event\Index" name="newevent" template="vendorName_ModuleName::Index.phtml" />
</referenceContainer>
</body>
</page>
Erstellen Sie die Controller-Datei Index.php
<?php
namespace vendorName\ModuleName\Controller\Index;
use Magento\Framework\App\Action;
use Magento\Framework\View\Result\PageFactory;
class Index extends \Magento\Framework\App\Action\Action
{
/**
* @param Action\Context $context
*/
protected $resultPageFactory;
public function __construct(
Action\Context $context,
PageFactory $resultPageFactory
) {
parent::__construct($context);
$this->resultPageFactory = $resultPageFactory;
}
public function execute() {
$this->_view->loadLayout();
$this->_view->renderLayout();
}
}
Erstellen Sie die Vorlagendatei Index.phtml
<?php
var_dump($block->getgetHello()->getData());
Ich hoffe es ist Arbeit für immer