Sie können dies über Sammlungen tun:
Zuerst müssen Sie ein CategoryFactory
in Ihren Klassenkonstruktor einfügen.
Magento 2.0 & 2.1:
public function __construct(
...
\Magento\Catalog\Model\CategoryFactory $categoryFactory
) {
$this->_categoryFactory = $categoryFactory;
parent::__construct(...);
}
Dann können Sie überall in Ihrer Klasse Folgendes tun:
$collection = $this->_categoryFactory->create()->getCollection()->addAttributeToFilter('name',$categoryTitle)->setPageSize(1);
if ($collection->getSize()) {
$categoryId = $collection->getFirstItem()->getId();
}
Magento 2.2:
public function __construct(
...
\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $collecionFactory
) {
$this->_collectionFactory = $collecionFactory;
parent::__construct(...);
}
Dann können Sie überall in Ihrer Klasse Folgendes tun:
$collection = $this->collecionFactory
->create()
->addAttributeToFilter('name',$categoryTitle)
->setPageSize(1);
if ($collection->getSize()) {
$categoryId = $collection->getFirstItem()->getId();
}
Raphael beim digitalen Pianismus
quelle
Dies kann mithilfe von Serviceverträgen erfolgen, die als Best Practice gelten.
quelle
Sie können es einfach tun mit
name
,quelle
Versuchen Sie den folgenden Code für die HTML-Datei:
quelle
Ich habe es mit Hilfe meiner Collage bekommen
:) Da die Sammlung nur den gewünschten Datensatz zurückgibt, können Sie das einzige Ergebnis mit
->getFirstItem()
dem obigen Code abrufenquelle
Um dies in einem funktionierenden Skript umzugestalten, schlage ich Folgendes vor
Bearbeiten: Ich habe ein Skript erstellt und getestet. Ich habe eine Datei in /scripts/file.php erstellt
quelle
Ich habe es geschafft, meine eigene (effizientere) Methode zu schreiben:
Dieser Code speichert alle title: ids in einem Array zwischen und fragt nur zweimal ab.
Hat für mich gearbeitet. Einfacher zu bedienen!
quelle
Zuerst müssen Sie die Factory-Klasse der Sammlung injizieren
Danach können Sie in Ihrer Methode Folgendes tun:
quelle