本文整理汇总了PHP中Floxim\Floxim\System\Fx::dig方法的典型用法代码示例。如果您正苦于以下问题:PHP Fx::dig方法的具体用法?PHP Fx::dig怎么用?PHP Fx::dig使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Floxim\Floxim\System\Fx
的用法示例。
在下文中一共展示了Fx::dig方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: saveVar
public function saveVar($input)
{
$result = array();
if (isset($input['page_id'])) {
fx::env('page_id', $input['page_id']);
}
$ib = fx::data('infoblock', $input['infoblock']['id']);
if ($ib->isLayout()) {
$root_ib = $ib->getRootInfoblock();
$ib_visual = $root_ib->getVisual();
} elseif ($visual_id = fx::dig($input, 'infoblock.visual_id')) {
$ib_visual = fx::data('infoblock_visual', $visual_id);
} else {
$ib_visual = $ib->getVisual();
}
// group vars by type to process content vars first
// because we need content id for 'content-visual' vars on adding a new entity
$vars = fx::collection($input['vars'])->apply(function ($v) {
if ($v['var']['type'] == 'livesearch' && !$v['value']) {
$v['value'] = array();
}
})->group(function ($v) {
return $v['var']['var_type'];
});
$contents = fx::collection();
$new_entity = null;
if (isset($input['new_entity_props'])) {
$new_props = $input['new_entity_props'];
$new_com = fx::component($new_props['type']);
$new_entity = fx::content($new_props['type'])->create($new_props);
$contents['new@' . $new_com['id']] = $new_entity;
// we are working with linker and user pressed "add new" button to create linked entity
if (isset($input['create_linked_entity'])) {
$linked_entity_com = fx::component($input['create_linked_entity']);
$linked_entity = fx::content($linked_entity_com['keyword'])->create();
$contents['new@' . $linked_entity_com['id']] = $linked_entity;
// bind the new entity to the linker prop
if (isset($new_props['_link_field'])) {
$link_field = $new_com->getFieldByKeyword($new_props['_link_field'], true);
$target_prop = $link_field['format']['prop_name'];
$new_entity[$target_prop] = $linked_entity;
}
}
}
if (isset($vars['content'])) {
$content_groups = $vars['content']->group(function ($v) {
$vid = $v['var']['content_id'];
if (!$vid) {
$vid = 'new';
}
return $vid . '@' . $v['var']['content_type_id'];
});
foreach ($content_groups as $content_id_and_type => $content_vars) {
list($content_id, $content_type_id) = explode("@", $content_id_and_type);
if ($content_id !== 'new') {
$c_content = fx::content($content_type_id, $content_id);
if (!$c_content) {
continue;
}
$contents[$content_id_and_type] = $c_content;
}
$vals = array();
foreach ($content_vars as $var) {
$vals[$var['var']['name']] = $var['value'];
}
if (isset($contents[$content_id_and_type])) {
$contents[$content_id_and_type]->setFieldValues($vals, array_keys($vals));
} else {
fx::log('Content not found in group', $contents, $content_id, $vals);
}
}
}
$new_id = false;
$result['saved_entities'] = array();
foreach ($contents as $cid => $c) {
try {
$c->save();
$result['saved_entities'][] = $c->get();
if ($cid == 'new') {
$new_id = $c['id'];
}
} catch (\Exception $e) {
$result['status'] = 'error';
if ($e instanceof \Floxim\Floxim\System\Exception\EntityValidation) {
$result['errors'] = $e->toResponse();
}
break;
}
}
if (isset($vars['visual'])) {
foreach ($vars['visual'] as $c_var) {
$var = $c_var['var'];
$value = $c_var['value'];
$var['id'] = preg_replace("~\\#new_id\\#\$~", $new_id, $var['id']);
$visual_set = $var['template_is_wrapper'] ? 'wrapper_visual' : 'template_visual';
if ($value == 'null') {
$value = null;
}
$c_visual = $ib_visual[$visual_set];
if (!is_array($c_visual)) {
//.........这里部分代码省略.........
示例2: isAvailableOnPage
public function isAvailableOnPage($page)
{
if ($this['site_id'] != $page['site_id']) {
return;
}
if ($page->hasVirtualPath()) {
$ids = $page->getPath()->getValues('id');
} else {
$ids = $page->getParentIds();
}
$ids[] = $page['id'];
$ids[] = 0;
// root
if (!in_array($this['page_id'], $ids)) {
return false;
}
// if page_id=0 blunt - all pages, ignored by the filter scope.pages
if ($this['page_id'] != 0) {
// scope - "this page only"
if (fx::dig($this, 'scope.pages') == 'this' && $this['page_id'] != $page['id']) {
return false;
}
// scope - "this level, and we look parent
if (fx::dig($this, 'scope.pages') == 'children' && $this['page_id'] == $page['id']) {
return false;
}
}
// check for compliance with the filter type page
$scope_page_type = fx::dig($this, 'scope.page_type');
if ($scope_page_type && fx::getComponentFullName($scope_page_type) != fx::getComponentFullName($page['type'])) {
return false;
}
return true;
}
示例3: getRouter
/**
* Get the option router by name
* fx::router('front')
*/
public function getRouter($router_name)
{
$class = 'Floxim\\Floxim\\Router\\' . ucfirst($router_name);
return fx::dig($this->routers, $class . '.router');
}