Получение значения из контента по артикулу

Главные вкладки

Комментарии

Аватар пользователя Riaron Riaron 20 августа 2019 в 11:19
<?php
$a
=\Drupal::entityTypeManager()->getStorage('Notebook')->loadByProperties(['Артикул' => 'n1']);
var_dump($a);
?>

выдает ошибку
На сайте произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже.

Аватар пользователя Riaron Riaron 20 августа 2019 в 13:14

вставил машинные имена ничего не поменялось, может надо неймспейс написать?

<?php$a=\Drupal::entityTypeManager()->getStorage('notebook')->loadByProperties(['field_artikul' => 'n1']);
var_dump($a);?>
Аватар пользователя gun_dose gun_dose 20 августа 2019 в 14:35

Тип сущности точно ноутбук? А не нода? И вообще, есть в друпале журнал, там про каждую ошибку подробно написано.

Аватар пользователя Riaron Riaron 20 августа 2019 в 15:03

Drupal\Component\Plugin\Exception\PluginNotFoundException: The "Notebook" entity type does not exist. in Drupal\Core\Entity\EntityTypeManager->getDefinition() (line 150 of C:\openserver\OSPanel\domains\mysite1.local\core\lib\Drupal\Core\Entity\EntityTypeManager.php).

<?php
$a
=\Drupal::entityTypeManager()->getStorage('Notebook')->loadByProperties(['field_artikul' => 'n1']);
var_dump($a);
?>
Аватар пользователя gun_dose gun_dose 20 августа 2019 в 16:36

Ну во-первых, артикул должен быть уникальным, во-вторых, можно так:

<?php
$a
=\Drupal::entityTypeManager()->getStorage('node')->loadByProperties([
'type' => 'notebook',
'field_artikul' => 'n1'
]);?>
Аватар пользователя Riaron Riaron 20 августа 2019 в 16:46
<?php 
return $a->price;?>

ничего не возвращает а var_dump($a) возвращает
array(1) { [1]=> object(Drupal\node\Entity\Node)#1056 (29) { ["in_preview"]=> NULL ["values":protected]=> array(23) { ["nid"]=> array(1) { ["x-default"]=> string(1) "1" } ["vid"]=> array(1) { ["x-default"]=> string(1) "2" } ["type"]=> array(1) { ["x-default"]=> string(8) "notebook" } ["uuid"]=> array(1) { ["x-default"]=> string(36) "343bd54e-339d-4ca0-9abb-fa67c462d0f4" } ["langcode"]=> array(1) { ["x-default"]=> string(2) "ru" } ["revision_uid"]=> array(1) { ["x-default"]=> string(1) "1" } ["revision_timestamp"]=> array(1) { ["x-default"]=> string(10) "1565854539" } ["revision_log"]=> array(1) { ["x-default"]=> NULL } ["revision_default"]=> array(1) { ["x-default"]=> string(1) "1" } ["isDefaultRevision"]=> array(1) { ["x-default"]=> string(1) "1" } ["status"]=> array(1) { ["x-default"]=> string(1) "1" } ["uid"]=> array(1) { ["x-default"]=> string(1) "1" } ["title"]=> array(1) { ["x-default"]=> string(22) "HP Pavilion dv6-6c34er" } ["created"]=> array(1) { ["x-default"]=> string(10) "1565853919" } ["changed"]=> array(1) { ["x-default"]=> string(10) "1565854539" } ["promote"]=> array(1) { ["x-default"]=> string(1) "1" } ["sticky"]=> array(1) { ["x-default"]=> string(1) "0" } ["default_langcode"]=> array(1) { ["x-default"]=> string(1) "1" } ["revision_translation_affected"]=> array(1) { ["x-default"]=> string(1) "1" } ["field_artikul"]=> array(1) { ["x-default"]=> array(1) { [0]=> array(1) { ["value"]=> string(2) "n1" } } } ["field_dobavit_v_korzinu"]=> array(1) { ["x-default"]=> array(1) { [0]=> array(3) { ["uri"]=> string(24) "http://mysite1.local/atb" ["title"]=> string(0) "" ["options"]=> array(0) { } } } } ["field_foto"]=> array(1) { ["x-default"]=> array(1) { [0]=> array(5) { ["target_id"]=> string(1) "1" ["alt"]=> string(9) "something" ["title"]=> string(0) "" ["width"]=> string(3) "600" ["height"]=> string(3) "600" } } } ["field_kratkoe_opisanie"]=> array(1) { ["x-default"]=> array(1) { [0]=> array(1) { ["value"]=> string(9) "something" } } } } ["fields":protected]=> array(0) { } ["fieldDefinitions":protected]=> NULL ["languages":protected]=> NULL ["langcodeKey":protected]=> string(8) "langcode" ["defaultLangcodeKey":protected]=> string(16) "default_langcode" ["activeLangcode":protected]=> string(9) "x-default" ["defaultLangcode":protected]=> string(2) "ru" ["translations":protected]=> array(1) { ["x-default"]=> array(1) { ["status"]=> int(1) } } ["translationInitialize":protected]=> bool(false) ["newRevision":protected]=> bool(false) ["isDefaultRevision":protected]=> string(1) "1" ["entityKeys":protected]=> array(4) { ["bundle"]=> string(8) "notebook" ["id"]=> string(1) "1" ["revision"]=> string(1) "2" ["uuid"]=> string(36) "343bd54e-339d-4ca0-9abb-fa67c462d0f4" } ["translatableEntityKeys":protected]=> array(8) { ["label"]=> array(1) { ["x-default"]=> string(22) "HP Pavilion dv6-6c34er" } ["langcode"]=> array(1) { ["x-default"]=> string(2) "ru" } ["status"]=> array(1) { ["x-default"]=> string(1) "1" } ["published"]=> array(1) { ["x-default"]=> string(1) "1" } ["uid"]=> array(1) { ["x-default"]=> string(1) "1" } ["owner"]=> array(1) { ["x-default"]=> string(1) "1" } ["default_langcode"]=> array(1) { ["x-default"]=> string(1) "1" } ["revision_translation_affected"]=> array(1) { ["x-default"]=> string(1) "1" } } ["validated":protected]=> bool(false) ["validationRequired":protected]=> bool(false) ["loadedRevisionId":protected]=> string(1) "2" ["revisionTranslationAffectedKey":protected]=> string(29) "revision_translation_affected" ["enforceRevisionTranslationAffected":protected]=> array(0) { } ["entityTypeId":protected]=> string(4) "node" ["enforceIsNew":protected]=> NULL ["typedData":protected]=> NULL ["cacheContexts":protected]=> array(0) { } ["cacheTags":protected]=> array(0) { } ["cacheMaxAge":protected]=> int(-1) ["_serviceIds":protected]=> array(0) { } ["_entityStorages":protected]=> array(0) { } ["isSyncing":protected]=> bool(false) } } The website encountered an unexpected error. Please try again later.

Аватар пользователя Riaron Riaron 20 августа 2019 в 17:13

почитал в интернете про \Drupal::entityTypeManager() попробовал сдлать так:

<?php
 $b
=reset($a);
 return 
$b->price;?>

возвращает пустое поле

Аватар пользователя Riaron Riaron 20 августа 2019 в 17:52

оказывается машинное имя цены field_cena
как полусить значение цены
если var_dump($a) показывает
rray(1) { [1]=> object(Drupal\node\Entity\Node)#1051 (29) { ["in_preview"]=> NULL ["values":protected]=> array(24) { ["nid"]=> array(1) { ["x-default"]=> string(1) "1" } ["vid"]=> array(1) { ["x-default"]=> string(1) "4" } ["type"]=> array(1) { ["x-default"]=> string(8) "notebook" } ["uuid"]=> array(1) { ["x-default"]=> string(36) "343bd54e-339d-4ca0-9abb-fa67c462d0f4" } ["langcode"]=> array(1) { ["x-default"]=> string(2) "ru" } ["revision_uid"]=> array(1) { ["x-default"]=> string(1) "1" } ["revision_timestamp"]=> array(1) { ["x-default"]=> string(10) "1566312346" } ["revision_log"]=> array(1) { ["x-default"]=> NULL } ["revision_default"]=> array(1) { ["x-default"]=> string(1) "1" } ["isDefaultRevision"]=> array(1) { ["x-default"]=> string(1) "1" } ["status"]=> array(1) { ["x-default"]=> string(1) "1" } ["uid"]=> array(1) { ["x-default"]=> string(1) "1" } ["title"]=> array(1) { ["x-default"]=> string(22) "HP_Pavilion_dv6-6c34er" } ["created"]=> array(1) { ["x-default"]=> string(10) "1565853919" } ["changed"]=> array(1) { ["x-default"]=> string(10) "1566312346" } ["promote"]=> array(1) { ["x-default"]=> string(1) "1" } ["sticky"]=> array(1) { ["x-default"]=> string(1) "0" } ["default_langcode"]=> array(1) { ["x-default"]=> string(1) "1" } ["revision_translation_affected"]=> array(1) { ["x-default"]=> string(1) "1" } ["field_cena"]=> array(1) { ["x-default"]=> array(1) { [0]=> array(1) { ["value"]=> string(3) "600" } } } ["field_artikul"]=> array(1) { ["x-default"]=> array(1) { [0]=> array(1) { ["value"]=> string(2) "n1" } } } ["field_dobavit_v_korzinu"]=> array(1) { ["x-default"]=> array(1) { [0]=> array(3) { ["uri"]=> string(24) "http://mysite1.local/atb" ["title"]=> string(0) "" ["options"]=> array(0) { } } } } ["field_foto"]=> array(1) { ["x-default"]=> array(1) { [0]=> array(5) { ["target_id"]=> string(1) "1" ["alt"]=> string(9) "something" ["title"]=> string(0) "" ["width"]=> string(3) "600" ["height"]=> string(3) "600" } } } ["field_kratkoe_opisanie"]=> array(1) { ["x-default"]=> array(1) { [0]=> array(1) { ["value"]=> string(9) "something" } } } } ["fields":protected]=> array(0) { } ["fieldDefinitions":protected]=> NULL ["languages":protected]=> NULL ["langcodeKey":protected]=> string(8) "langcode" ["defaultLangcodeKey":protected]=> string(16) "default_langcode" ["activeLangcode":protected]=> string(9) "x-default" ["defaultLangcode":protected]=> string(2) "ru" ["translations":protected]=> array(1) { ["x-default"]=> array(1) { ["status"]=> int(1) } } ["translationInitialize":protected]=> bool(false) ["newRevision":protected]=> bool(false) ["isDefaultRevision":protected]=> string(1) "1" ["entityKeys":protected]=> array(4) { ["bundle"]=> string(8) "notebook" ["id"]=> string(1) "1" ["revision"]=> string(1) "4" ["uuid"]=> string(36) "343bd54e-339d-4ca0-9abb-fa67c462d0f4" } ["translatableEntityKeys":protected]=> array(8) { ["label"]=> array(1) { ["x-default"]=> string(22) "HP_Pavilion_dv6-6c34er" } ["langcode"]=> array(1) { ["x-default"]=> string(2) "ru" } ["status"]=> array(1) { ["x-default"]=> string(1) "1" } ["published"]=> array(1) { ["x-default"]=> string(1) "1" } ["uid"]=> array(1) { ["x-default"]=> string(1) "1" } ["owner"]=> array(1) { ["x-default"]=> string(1) "1" } ["default_langcode"]=> array(1) { ["x-default"]=> string(1) "1" } ["revision_translation_affected"]=> array(1) { ["x-default"]=> string(1) "1" } } ["validated":protected]=> bool(false) ["validationRequired":protected]=> bool(false) ["loadedRevisionId":protected]=> string(1) "4" ["revisionTranslationAffectedKey":protected]=> string(29) "revision_translation_affected" ["enforceRevisionTranslationAffected":protected]=> array(0) { } ["entityTypeId":protected]=> string(4) "node" ["enforceIsNew":protected]=> NULL ["typedData":protected]=> NULL ["cacheContexts":protected]=> array(0) { } ["cacheTags":protected]=> array(0) { } ["cacheMaxAge":protected]=> int(-1) ["_serviceIds":protected]=> array(0) { } ["_entityStorages":protected]=> array(0) { } ["isSyncing":protected]=> bool(false) } } The website encountered an unexpected error. Please try again later.

Аватар пользователя gun_dose gun_dose 20 августа 2019 в 22:15

loadByProperties возвращает массив, поэтому нужен reset. Далее $node->get('field_cena')->value;
Вот этот валуе нужен затем, что поля бывают всякие разные и состоят из разных компонентов.

После ресета можно ещё поставить проверку на пустое значение, ведь может оказаться так, что нужного товара не найдётся по каким-то причинам.