本文整理汇总了PHP中Magento\Eav\Model\Entity\Attribute::getSource方法的典型用法代码示例。如果您正苦于以下问题:PHP Attribute::getSource方法的具体用法?PHP Attribute::getSource怎么用?PHP Attribute::getSource使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Magento\Eav\Model\Entity\Attribute
的用法示例。
在下文中一共展示了Attribute::getSource方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: 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;
}
示例2: _addSearchCriteria
/**
* Add data about search criteria to object state
*
* @param EntityAttribute $attribute
* @param mixed $value
* @return $this
*/
protected function _addSearchCriteria($attribute, $value)
{
$name = $attribute->getStoreLabel();
if (is_array($value)) {
if (isset($value['from']) && isset($value['to'])) {
if (!empty($value['from']) || !empty($value['to'])) {
if (isset($value['currency'])) {
/** @var $currencyModel Currency */
$currencyModel = $this->_currencyFactory->create()->load($value['currency']);
$from = $currencyModel->format($value['from'], array(), false);
$to = $currencyModel->format($value['to'], array(), false);
} else {
$currencyModel = null;
}
if (strlen($value['from']) > 0 && strlen($value['to']) > 0) {
// -
$value = sprintf('%s - %s', $currencyModel ? $from : $value['from'], $currencyModel ? $to : $value['to']);
} elseif (strlen($value['from']) > 0) {
// and more
$value = __('%1 and greater', $currencyModel ? $from : $value['from']);
} elseif (strlen($value['to']) > 0) {
// to
$value = __('up to %1', $currencyModel ? $to : $value['to']);
}
} else {
return $this;
}
}
}
if (($attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'multiselect') && is_array($value)) {
foreach ($value as $key => $val) {
$value[$key] = $attribute->getSource()->getOptionText($val);
if (is_array($value[$key])) {
$value[$key] = $value[$key]['label'];
}
}
$value = implode(', ', $value);
} elseif ($attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'multiselect') {
$value = $attribute->getSource()->getOptionText($value);
if (is_array($value)) {
$value = $value['label'];
}
} elseif ($attribute->getFrontendInput() == 'boolean') {
$value = $value == 1 ? __('Yes') : __('No');
}
$this->_searchCriterias[] = array('name' => $name, 'value' => $value);
return $this;
}
示例3: _getSelectHtmlWithValue
/**
* Select field filter HTML with selected value.
*
* @param Attribute $attribute
* @param mixed $value
* @return \Magento\Framework\Phrase|string
* @SuppressWarnings(PHPMD.UnusedLocalVariable)
*/
protected function _getSelectHtmlWithValue(Attribute $attribute, $value)
{
if ($attribute->getFilterOptions()) {
$options = [];
foreach ($attribute->getFilterOptions() as $value => $label) {
$options[] = ['value' => $value, 'label' => $label];
}
} else {
$options = $attribute->getSource()->getAllOptions(false);
}
if ($size = count($options)) {
// add empty vaue option
$firstOption = reset($options);
if ('' === $firstOption['value']) {
$options[key($options)]['label'] = '';
} else {
array_unshift($options, ['value' => '', 'label' => '']);
}
$arguments = ['name' => $this->getFilterElementName($attribute->getAttributeCode()), 'id' => $this->getFilterElementId($attribute->getAttributeCode()), 'class' => 'admin__control-select select select-export-filter'];
/** @var $selectBlock \Magento\Framework\View\Element\Html\Select */
$selectBlock = $this->_layout->createBlock('Magento\\Framework\\View\\Element\\Html\\Select', '', ['data' => $arguments]);
return $selectBlock->setOptions($options)->setValue($value)->getHtml();
} else {
return __('We can\'t filter an attribute with no attribute options.');
}
}
示例4: _applyTypeSpecificConfig
/**
* Apply configuration specific for different element type
*
* @param string $inputType
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @param \Magento\Eav\Model\Entity\Attribute $attribute
* @return void
*/
protected function _applyTypeSpecificConfig($inputType, $element, \Magento\Eav\Model\Entity\Attribute $attribute)
{
switch ($inputType) {
case 'select':
$element->setValues($attribute->getSource()->getAllOptions(true, true));
break;
case 'multiselect':
$element->setValues($attribute->getSource()->getAllOptions(false, true));
$element->setCanBeEmpty(true);
break;
case 'date':
$element->setDateFormat($this->_localeDate->getDateFormatWithLongYear());
break;
case 'multiline':
$element->setLineCount($attribute->getMultilineCount());
break;
default:
break;
}
}
示例5: _getSelectHtmlWithValue
/**
* Select field filter HTML with selected value.
*
* @param Attribute $attribute
* @param mixed $value
* @return string
*/
protected function _getSelectHtmlWithValue(Attribute $attribute, $value)
{
if ($attribute->getFilterOptions()) {
$options = array();
foreach ($attribute->getFilterOptions() as $value => $label) {
$options[] = array('value' => $value, 'label' => $label);
}
} else {
$options = $attribute->getSource()->getAllOptions(false);
}
if ($size = count($options)) {
// add empty vaue option
$firstOption = reset($options);
if ('' === $firstOption['value']) {
$options[key($options)]['label'] = '';
} else {
array_unshift($options, array('value' => '', 'label' => ''));
}
$arguments = array('name' => $this->getFilterElementName($attribute->getAttributeCode()), 'id' => $this->getFilterElementId($attribute->getAttributeCode()), 'class' => 'select select-export-filter');
/** @var $selectBlock \Magento\Framework\View\Element\Html\Select */
$selectBlock = $this->_layout->getBlockFactory()->createBlock('Magento\\Framework\\View\\Element\\Html\\Select', array('data' => $arguments));
return $selectBlock->setOptions($options)->setValue($value)->getHtml();
} else {
return __('Attribute does not has options, so filtering is impossible');
}
}