本文整理汇总了PHP中Magento\Eav\Model\Entity\Attribute类的典型用法代码示例。如果您正苦于以下问题:PHP Attribute类的具体用法?PHP Attribute怎么用?PHP Attribute使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Attribute类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testValidate
/**
* @dataProvider attributeValueDataProvider
*/
public function testValidate($data)
{
$this->_attribute->expects($this->atLeastOnce())->method('getAttributeCode')->will($this->returnValue('code'));
$product = new \Magento\Framework\DataObject(['code' => $data]);
$this->_model->validate($product);
$this->assertEquals('1,2,3', $product->getCode());
}
示例2: saveAttribute
private function saveAttribute()
{
if ($this->attributeObj->getId()) {
return array('result' => true, 'obj' => $this->attributeObj);
}
if (!$this->validate()) {
return array('result' => false, 'error' => 'Attribute builder. Validation failed.');
}
$this->attributeObj = $this->catalogAttributeFactory->create();
$data = $this->params;
$data['attribute_code'] = $this->code;
$data['frontend_label'] = array(\Magento\Store\Model\Store::DEFAULT_STORE_ID => $this->primaryLabel);
$data['frontend_input'] = $this->inputType;
$data['entity_type_id'] = $this->entityTypeId;
$data['is_user_defined'] = 1;
$data['source_model'] = $this->productHelper->getAttributeSourceModelByInputType($this->inputType);
$data['backend_model'] = $this->productHelper->getAttributeBackendModelByInputType($this->inputType);
$data['backend_type'] = $this->attributeObj->getBackendTypeByInput($this->inputType);
!isset($data['is_global']) && ($data['is_global'] = self::SCOPE_STORE);
!isset($data['is_configurable']) && ($data['is_configurable'] = 0);
!isset($data['is_filterable']) && ($data['is_filterable'] = 0);
!isset($data['is_filterable_in_search']) && ($data['is_filterable_in_search'] = 0);
!isset($data['apply_to']) && ($data['apply_to'] = array());
$this->prepareOptions($data);
$this->prepareDefault($data);
$this->attributeObj->addData($data);
try {
$this->attributeObj->save();
} catch (\Exception $e) {
return array('result' => false, 'error' => $e->getMessage());
}
return array('result' => true, 'obj' => $this->attributeObj);
}
示例3: setUp
protected function setUp()
{
$this->product = $this->getMock('Magento\\Catalog\\Model\\Product', [], [], '', false);
$this->attribute = $this->getMock('Magento\\Eav\\Model\\Entity\\Attribute', [], [], '', false);
$this->attribute->expects($this->any())->method('getAttributeCode')->willReturn('media_gallery');
$this->resourceModel = $this->getMock('Magento\\Catalog\\Model\\ResourceModel\\Product\\Gallery', [], [], '', false);
$this->mediaGalleryReadHandler = $this->getMock('Magento\\Catalog\\Model\\Product\\Gallery\\ReadHandler', [], [], '', false);
$objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
$this->subject = $objectManager->getObject('Magento\\ProductVideo\\Model\\Plugin\\Catalog\\Product\\Gallery\\ReadHandler', ['resourceModel' => $this->resourceModel]);
}
示例4: getOptionText
/**
* @param Attribute $attribute
* @param int $optionId
* @return null|string
* @toso: add mapping/caching
*/
public function getOptionText($attribute, $optionId)
{
$result = null;
/** @var \Magento\Eav\Api\Data\AttributeOptionInterface $option */
foreach ($attribute->getOptions() as $option) {
if ($option->getValue() == $optionId) {
$result = $option->getLabel();
}
}
return $result;
}
示例5: addOptionValueToCollection
/**
* Add Join with option value for collection select
*
* @param \Magento\Eav\Model\Entity\Collection\AbstractCollection $collection
* @param \Magento\Eav\Model\Entity\Attribute $attribute
* @param \Zend_Db_Expr $valueExpr
* @return $this
*/
public function addOptionValueToCollection($collection, $attribute, $valueExpr)
{
$adapter = $this->_getReadAdapter();
$attributeCode = $attribute->getAttributeCode();
$optionTable1 = $attributeCode . '_option_value_t1';
$optionTable2 = $attributeCode . '_option_value_t2';
$tableJoinCond1 = "{$optionTable1}.option_id={$valueExpr} AND {$optionTable1}.store_id=0";
$tableJoinCond2 = $adapter->quoteInto("{$optionTable2}.option_id={$valueExpr} AND {$optionTable2}.store_id=?", $collection->getStoreId());
$valueExpr = $adapter->getCheckSql("{$optionTable2}.value_id IS NULL", "{$optionTable1}.value", "{$optionTable2}.value");
$collection->getSelect()->joinLeft([$optionTable1 => $this->getTable('eav_attribute_option_value')], $tableJoinCond1, [])->joinLeft([$optionTable2 => $this->getTable('eav_attribute_option_value')], $tableJoinCond2, [$attributeCode => $valueExpr]);
return $this;
}
示例6: getOptionIds
/**
* Retrive options ids from a labels array.
*
* @param Attribute $attribute Attribute.
* @param string[] $labels Labels
*
* @return integer[]
*/
private function getOptionIds(Attribute $attribute, $labels)
{
$optionIds = [];
if (!is_array($labels)) {
$labels = [$labels];
}
$options = $attribute->getSource()->getAllOptions();
foreach ($labels as $label) {
foreach ($options as $option) {
if ($option['label'] == $label) {
$optionIds[] = (int) $option['value'];
}
}
}
return $optionIds;
}
示例7: setUp
public function setUp()
{
$this->productFactoryMock = $this->getMock('\\Magento\\Catalog\\Model\\ResourceModel\\ProductFactory', ['create'], [], '', false);
$this->productMock = $this->getMock('\\Magento\\Catalog\\Model\\Product', [], [], '', false);
$this->fileStorageDbMock = $this->getMock('\\Magento\\MediaStorage\\Helper\\File\\Storage\\Database', [], [], '', false);
$this->jsonHelperMock = $this->getMock('\\Magento\\Framework\\Json\\Helper\\Data', [], [], '', false);
$this->mediaConfigMock = $this->getMock('\\Magento\\Catalog\\Model\\Product\\Media\\Config', [], [], '', false);
$this->filesystemMock = $this->getMock('\\Magento\\Framework\\Filesystem', [], [], '', false);
$write = $this->getMock('\\Magento\\Framework\\Filesystem\\Directory\\Write', [], [], '', false);
$this->filesystemMock->expects($this->any())->method('getDirectoryWrite')->with('media')->willReturn($write);
$this->resourceEntryMediaGalleryMock = $this->getMock('\\Magento\\Catalog\\Model\\ResourceModel\\Product\\Attribute\\Backend\\Media', [], [], '', false);
$this->attributeMock = $this->getMock('\\Magento\\Eav\\Model\\Entity\\Attribute', [], [], '', false);
$this->attributeMock->expects($this->any())->method('getAttributeCode')->willReturn('media_gallery');
$this->mediaBackendModel = $this->getMock('Magento\\Catalog\\Model\\Product\\Attribute\\Backend\\Media', [], [], '', false);
$objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
$this->modelObject = $objectManager->getObject('\\Magento\\ProductVideo\\Model\\Plugin\\ExternalVideoEntryProcessor', ['productFactory' => $this->productFactoryMock, 'fileStorageDb' => $this->fileStorageDbMock, 'jsonHelper' => $this->jsonHelperMock, 'mediaConfig' => $this->mediaConfigMock, 'filesystem' => $this->filesystemMock, 'resourceEntryMediaGallery' => $this->resourceEntryMediaGalleryMock]);
}
示例8: testGetPrefixes
public function testGetPrefixes()
{
$entityTypeId = 3;
/** @var \Magento\Eav\Model\Entity\Type|\PHPUnit_Framework_MockObject_MockObject $entityType */
$entityType = $this->getMockBuilder('Magento\\Eav\\Model\\Entity\\Type')->disableOriginalConstructor()->getMock();
$entityType->expects($this->once())->method('getId')->will($this->returnValue($entityTypeId));
/** @var AbstractFrontend|\PHPUnit_Framework_MockObject_MockObject $frontend */
$frontend = $this->getMockBuilder('Magento\\Eav\\Model\\Entity\\Attribute\\Frontend\\AbstractFrontend')->setMethods(['getLabel'])->disableOriginalConstructor()->getMockForAbstractClass();
$frontend->expects($this->once())->method('getLabel')->will($this->returnValue('testLabel'));
$this->attributeCollection->expects($this->once())->method('setEntityTypeFilter')->with($this->equalTo($entityTypeId));
$this->attributeCollection->expects($this->once())->method('setFrontendInputTypeFilter')->with($this->equalTo('media_image'));
$this->attribute->expects($this->once())->method('getAttributeCode')->will($this->returnValue('attributeCode'));
$this->attribute->expects($this->once())->method('getFrontend')->will($this->returnValue($frontend));
$this->attributeCollection->expects($this->any())->method('getIterator')->will($this->returnValue(new \ArrayIterator([$this->attribute])));
$this->eavConfig->expects($this->any())->method('getEntityType')->with($this->equalTo(Product::ENTITY))->will($this->returnValue($entityType));
$this->assertEquals([['field' => 'attributeCode_', 'label' => 'testLabel']], $this->model->getPrefixes());
}
示例9: testGetItemsIfFacetedDataIsEmpty
/**
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function testGetItemsIfFacetedDataIsEmpty()
{
$attributeCode = 'attributeCode';
$this->attribute->expects($this->atLeastOnce())->method('getAttributeCode')->willReturn($attributeCode);
$this->attribute->expects($this->atLeastOnce())->method('getIsFilterable')->willReturn(0);
$this->target->setAttributeModel($this->attribute);
$this->fulltextCollection->expects($this->once())->method('getFacetedData')->willReturn([]);
$this->itemDataBuilder->expects($this->once())->method('build')->willReturn([]);
$this->assertEquals([], $this->target->getItems());
}
示例10: testApply
public function testApply()
{
$filter = '10-150';
$requestVar = 'test_request_var';
$this->target->setRequestVar($requestVar);
$this->request->expects($this->exactly(1))->method('getParam')->will($this->returnCallback(function ($field) use($requestVar, $filter) {
$this->assertTrue(in_array($field, [$requestVar, 'id']));
return $filter;
}));
$attributeCode = 'AttributeCode';
$this->attribute->expects($this->any())->method('getAttributeCode')->will($this->returnValue($attributeCode));
$this->fulltextCollection->expects($this->once())->method('addFieldToFilter')->with($attributeCode)->will($this->returnSelf());
$this->target->apply($this->request);
}
示例11: testGetItemsWithoutApply
/**
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function testGetItemsWithoutApply()
{
$attributeCode = 'attributeCode';
$selectedOptions = [['label' => 'selectedOptionLabel1', 'value' => 'selectedOptionValue1', 'count' => 25], ['label' => 'selectedOptionLabel2', 'value' => 'selectedOptionValue2', 'count' => 13], ['label' => 'selectedOptionLabel3', 'value' => 'selectedOptionValue3', 'count' => 10]];
$facetedData = ['selectedOptionValue1' => ['count' => 10], 'selectedOptionValue2' => ['count' => 45], 'selectedOptionValue3' => ['count' => 50]];
$builtData = [['label' => $selectedOptions[0]['label'], 'value' => $selectedOptions[0]['value'], 'count' => $facetedData[$selectedOptions[0]['value']]['count']], ['label' => $selectedOptions[1]['label'], 'value' => $selectedOptions[1]['value'], 'count' => $facetedData[$selectedOptions[1]['value']]['count']], ['label' => $selectedOptions[2]['label'], 'value' => $selectedOptions[2]['value'], 'count' => $facetedData[$selectedOptions[2]['value']]['count']]];
$this->attribute->expects($this->exactly(2))->method('getAttributeCode')->will($this->returnValue($attributeCode));
$this->target->setAttributeModel($this->attribute);
$this->frontend->expects($this->once())->method('getSelectOptions')->will($this->returnValue($selectedOptions));
$this->fulltextCollection->expects($this->once())->method('getFacetedData')->will($this->returnValue($facetedData));
$this->itemDataBuilder->expects($this->at(0))->method('addItemData')->with($selectedOptions[0]['label'], $selectedOptions[0]['value'], $facetedData[$selectedOptions[0]['value']]['count'])->will($this->returnSelf());
$this->itemDataBuilder->expects($this->at(1))->method('addItemData')->with($selectedOptions[1]['label'], $selectedOptions[1]['value'], $facetedData[$selectedOptions[1]['value']]['count'])->will($this->returnSelf());
$this->itemDataBuilder->expects($this->once())->method('build')->will($this->returnValue($builtData));
$this->fulltextCollection->expects($this->once())->method('getSize')->will($this->returnValue(50));
$expectedFilterItems = [$this->createFilterItem(0, $builtData[0]['label'], $builtData[0]['value'], $builtData[0]['count']), $this->createFilterItem(1, $builtData[1]['label'], $builtData[1]['value'], $builtData[1]['count']), $this->createFilterItem(2, $builtData[2]['label'], $builtData[2]['value'], $builtData[2]['count'])];
$result = $this->target->getItems();
$this->assertEquals($expectedFilterItems, $result);
}
示例12: testGetItems
public function testGetItems()
{
$this->target->setAttributeModel($this->attribute);
$attributeCode = 'attributeCode';
$this->attribute->expects($this->any())->method('getAttributeCode')->will($this->returnValue($attributeCode));
$this->fulltextCollection->expects($this->once())->method('getFacetedData')->with($attributeCode)->will($this->returnValue([]));
$this->target->getItems();
}
示例13: getStaticAttributeFilterType
/**
* Determine filter type for static attribute.
*
* @static
* @param \Magento\Eav\Model\Entity\Attribute $attribute
* @return string
*/
public static function getStaticAttributeFilterType(\Magento\Eav\Model\Entity\Attribute $attribute)
{
if (in_array($attribute->getAttributeCode(), ['category_ids', 'media_gallery'])) {
return self::FILTER_TYPE_INPUT;
}
$columns = $attribute->getFlatColumns();
switch ($columns[$attribute->getAttributeCode()]['type']) {
case \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER:
case \Magento\Framework\DB\Ddl\Table::TYPE_BIGINT:
$type = self::FILTER_TYPE_NUMBER;
break;
case \Magento\Framework\DB\Ddl\Table::TYPE_DATE:
case \Magento\Framework\DB\Ddl\Table::TYPE_DATETIME:
case \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP:
$type = self::FILTER_TYPE_DATE;
break;
default:
$type = self::FILTER_TYPE_INPUT;
}
return $type;
}
示例14: getAttributeFieldName
/**
* Retrieve attribute field name
*
*
* @param Attribute $attribute
* @return string
*/
public function getAttributeFieldName($attribute)
{
$name = $attribute->getAttributeCode();
if ($suffix = $this->getForm()->getFieldNameSuffix()) {
$name = $this->getForm()->addSuffixToName($name, $suffix);
}
return $name;
}
示例15: findWhereAttributeIs
/**
* Return entities where attribute value is
*
* @param array|int $entityIdsFilter
* @param \Magento\Eav\Model\Entity\Attribute $attribute
* @param mixed $expectedValue
* @return array
*/
public function findWhereAttributeIs($entityIdsFilter, $attribute, $expectedValue)
{
$bind = array('attribute_id' => $attribute->getId(), 'value' => $expectedValue);
$select = $this->_getReadAdapter()->select()->from($attribute->getBackend()->getTable(), array('entity_id'))->where('attribute_id = :attribute_id')->where('value = :value')->where('entity_id IN(?)', $entityIdsFilter);
return $this->_getReadAdapter()->fetchCol($select, $bind);
}