deniskoronets/Laravel-GridView

View on GitHub
src/Columns/AttributeColumn.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Woo\GridView\Columns;

use Closure;
use Woo\GridView\Exceptions\GridViewConfigException;
use Woo\GridView\Filters\TextFilter;
use Woo\GridView\GridViewHelper;

class AttributeColumn extends BaseColumn
{
    public $formatters = ['text'];

    public $filter = TextFilter::class;

    /**
     * AttributeColumn constructor.
     * @param $config
     * @throws GridViewConfigException
     */
    public function __construct($config)
    {
        parent::__construct($config);

        if (empty($this->title)) {
            $this->title = GridViewHelper::columnTitle($this->value);
        }
    }

    /**
     * @return array
     */
    protected function configTests(): array
    {
        return array_merge(parent::configTests(), [
            'value' => 'string',
        ]);
    }

    /**
     * @inheritdoc
     */
    public function _renderValue($row)
    {
        $path = $row;
        $exp = explode('.', $this->value);

        /**
         * Extract dots notation (column.sub.sub)
         */
        foreach ($exp as $part) {

            if (isset($path[$part])) {
                $path = $path[$part];

            } elseif (isset($path->$part)) {
                $path = $path[$part];
            } else {
                return $this->emptyValue;
            }
        }

        return $path;
    }
}