arrilot / bitrix-hermitage
该软件包已废弃,不再维护。未建议替代软件包。
1.1.1
2018-03-22 17:07 UTC
Requires
- php: >=5.4.0
README
该软件包不再活跃
原因 - 我们不再在项目中使用Bitrix。如果您对项目感兴趣并希望承担维护工作 - 请将其分支并在此存储库中创建Issue,我们将在此处放置分支链接。
Bitrix Hermitage工作工具
安装
composer require arrilot/bitrix-hermitage
使用
该软件包提供了一种简单且便捷的API,用于通过Hermitage(编辑模式)操作Bitrix实体。
支持
- 添加、修改、删除信息块元素(包含在Bitrix盒中,但内置API过于复杂)
- 添加、修改、删除信息块分区(包含在Bitrix盒中,但内置API过于复杂)
- 修改、删除高负载块元素(不在Bitrix盒中)
带有编辑和删除按钮的示例
// Без пакета foreach($arResult["ARTICLES"] as $article) { $arButtons = CIBlock::GetPanelButtons( $article["IBLOCK_ID"], $article["ID"], 0, array("SECTION_BUTTONS" => false, "SESSID" => false) ); $article["EDIT_LINK"] = $arButtons["edit"]["edit_element"]["ACTION_URL"]; $article["DELETE_LINK"] = $arButtons["edit"]["delete_element"]["ACTION_URL"]; $areaId = 'iblock_element_' . $advice['ID']; $this->AddEditAction($areaId, $article['EDIT_LINK'], CIBlock::GetArrayByID($element["IBLOCK_ID"], "ELEMENT_EDIT")); $this->AddDeleteAction($areaId, $article['DELETE_LINK'], CIBlock::GetArrayByID($element["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => 'Вы уверены, что хотите удалить элемент?')); ?><div id="<?=$this->GetEditAreaID($areaId)?>"><?= $article['NAME'] ?></div><? } // с пакетом use Arrilot\BitrixHermitage\Action; foreach($arResult["ARTICLES"] as $article) { ?><div id="<?= Action::editAndDeleteIBlockElement($this, $article) ?>"><?= $article['NAME'] ?></div><? }
信息块分区和高负载块元素类似。
方法组
Action::editAndDeleteIBlockElement($template, $element); Action::editIBlockElement($template, $element); Action::deleteIBlockElement($template, $element, $confirm = 'Вы уверены, что хотите удалить элемент?'); Action::editAndDeleteIBlockSection($template, $section); Action::editIBlockSection($template, $section); Action::deleteIBlockSection($template, $section, $confirm = 'Вы уверены, что хотите удалить раздел?'); Action::editAndDeleteHLBlockElement($template, $element); Action::editHLBlockElement($template, $element); Action::deleteHLBlockElement($template, $element, $confirm = 'Вы уверены, что хотите удалить элемент?');
所有这些方法都返回一个字符串,需要将其插入到相应的HTML标签的id中。
带有添加按钮的示例
在Hermitage中实现的添加按钮有所不同。它们不需要指定具体的HTML块,而是直接绑定到整个组件。
// Без пакета if($APPLICATION->GetShowIncludeAreas()) { $arButtons = CIBlock::GetPanelButtons($iblockId, 0, 0, [...]); $this->addIncludeAreaIcons(CIBlock::GetComponentMenu($APPLICATION->GetPublicShowMode(), $arButtons)); } // С пакетом \Arrilot\BitrixHermitage\Action::addForIBlock($this, $iblockId, [...]); // В отличии от варианта выше, данный метод можно вызывать как в компоненте, так и в шаблоне. Он понимает и то, и другое в качестве первого параметра.
选项数组 [...]
完全对应于 CIBlock::GetPanelButtons 方法的方法数组 $arOptions
。例如,传递 'SECTION_BUTTONS' => false
可以关闭显示添加分区的按钮,而传递 'CATALOG'=>true
则可以启用目录模块。在最简单的情况下,甚至可以省略此参数。
$element
和 $section
是什么?
$element
和 $section
是数组(或实现 ArrayAccess
接口的对象)。对于信息块,它们应包含 ID
和 IBLOCK_ID
。对于高负载块,它们应包含 ID
和 HLBLOCK_ID
/HLBLOCK_TABLE_NAME
。此外,对于信息块,也可以直接传递元素的ID或分区的ID作为 $element
和 $section
。在这种情况下,将执行对数据库的额外请求,但它们仅在编辑模式下执行。
注意:如果您在Highload块中使用
eloquent
从arrilot/bitrix-models
,则建议在模型中添加以下方法:
public function getHlblockIdAttribute() { return 1; // поменять на нужный идентификатор }