skeeks\cms\helpers\TreeOptions::getAllMultiOptions PHP Method

getAllMultiOptions() public static method

public static getAllMultiOptions ( skeeks\cms\models\CmsTree $parentTree = null ) : array | mixed
$parentTree skeeks\cms\models\CmsTree
return array | mixed
    public static function getAllMultiOptions($parentTree = null)
    {
        $key = [ROOT_DIR, static::className()];
        if ($parentTree) {
            if ($parentTree instanceof CmsTree) {
                $parentTreeId = $parentTree->id;
            } else {
                $parentTreeId = $parentTree;
            }
            $key[] = $parentTreeId;
        }
        $cacheKey = md5(implode($key));
        $dependency = new TagDependency(['tags' => [(new CmsTree())->getTableCacheTag()]]);
        $options = \Yii::$app->cache->get($cacheKey);
        if (!$options) {
            if ($parentTree) {
                $options = \yii\helpers\ArrayHelper::map(self::findOne($parentTreeId)->getMultiOptions(), "id", "name");
            } else {
                $options = \yii\helpers\ArrayHelper::map((new static())->getMultiOptions(), "id", "name");
            }
            \Yii::$app->cache->set($cacheKey, $options, 0, $dependency);
        }
        return $options;
    }

Usage Example

    if (!$model->cmsTree) {
        return null;
    }
    $path = [];
    if ($model->cmsTree->parents) {
        foreach ($model->cmsTree->parents as $parent) {
            if ($parent->isRoot()) {
                $path[] = "[" . $parent->site->name . "] " . $parent->name;
            } else {
                $path[] = $parent->name;
            }
        }
    }
    $path = implode(" / ", $path);
    return "<small><a href='{$model->cmsTree->url}' target='_blank' data-pjax='0'>{$path} / {$model->cmsTree->name}</a></small>";
}, 'format' => 'raw', 'filter' => \skeeks\cms\helpers\TreeOptions::getAllMultiOptions(), 'attribute' => 'tree_id'], ['class' => \yii\grid\DataColumn::className(), 'value' => function (\skeeks\cms\models\CmsContentElement $model) {
    $result = [];
    if ($model->cmsContentElementTrees) {
        foreach ($model->cmsContentElementTrees as $contentElementTree) {
            $site = $contentElementTree->tree->root->site;
            $result[] = "<small><a href='{$contentElementTree->tree->url}' target='_blank' data-pjax='0'>[{$site->name}]/.../{$contentElementTree->tree->name}</a></small>";
        }
    }
    return implode('<br />', $result);
}, 'format' => 'raw', 'label' => \Yii::t('app', 'Additional sections')], ['attribute' => 'active', 'class' => \skeeks\cms\grid\BooleanColumn::className()], ['class' => \yii\grid\DataColumn::className(), 'value' => function (\skeeks\cms\models\CmsContentElement $model) {
    return \yii\helpers\Html::a('<i class="glyphicon glyphicon-arrow-right"></i>', $model->absoluteUrl, ['target' => '_blank', 'title' => \Yii::t('app', 'Watch to site (opens new window)'), 'data-pjax' => '0', 'class' => 'btn btn-default btn-sm']);
}, 'format' => 'raw']];
?>


All Usage Examples Of skeeks\cms\helpers\TreeOptions::getAllMultiOptions