本文整理汇总了PHP中Anomaly\Streams\Platform\Ui\Table\TableBuilder::getColumns方法的典型用法代码示例。如果您正苦于以下问题:PHP TableBuilder::getColumns方法的具体用法?PHP TableBuilder::getColumns怎么用?PHP TableBuilder::getColumns使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Anomaly\Streams\Platform\Ui\Table\TableBuilder
的用法示例。
在下文中一共展示了TableBuilder::getColumns方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: handle
/**
* Handle the command.
*/
public function handle()
{
$stream = $this->builder->getTableStream();
if (!$stream instanceof StreamInterface) {
return;
}
$eager = [];
if ($stream->isTranslatable()) {
$eager[] = 'translations';
}
$assignments = $stream->getRelationshipAssignments();
foreach ($this->builder->getColumns() as $column) {
/**
* If the column value is a string and uses a dot
* format then check if it's a relation.
*/
if (isset($column['value']) && is_string($column['value']) && preg_match("/^entry.([a-zA-Z\\_]+)./", $column['value'], $match)) {
if ($assignment = $assignments->findByFieldSlug($match[1])) {
if ($assignment->getFieldType()->getNamespace() == 'anomaly.field_type.polymorphic') {
continue;
}
$eager[] = camel_case($match[1]);
}
}
}
$this->builder->setTableOption('eager', array_unique($this->builder->getTableOption('eager', []) + $eager));
}
示例2: defaults
/**
* Set defaults.
*
* @param TableBuilder $builder
*/
public function defaults(TableBuilder $builder)
{
$stream = $builder->getTableStream();
if ($builder->getColumns() == []) {
$builder->setColumns([$stream->getTitleColumn()]);
}
}
示例3: normalize
/**
* Normalize the column input.
*
* @param TableBuilder $builder
*/
public function normalize(TableBuilder $builder)
{
$columns = $builder->getColumns();
foreach ($columns as $key => &$column) {
/*
* If the key is non-numerical then
* use it as the header and use the
* column as the column if it's a class.
*/
if (!is_numeric($key) && !is_array($column) && class_exists($column)) {
$column = ['heading' => $key, 'column' => $column];
}
/*
* If the key is non-numerical then
* use it as the header and use the
* column as the value.
*/
if (!is_numeric($key) && !is_array($column) && !class_exists($column)) {
$column = ['heading' => $key, 'value' => $column];
}
/*
* If the column is not already an
* array then treat it as the value.
*/
if (!is_array($column)) {
$column = ['value' => $column];
}
/*
* If the key is non-numerical and
* the column is an array without
* a heading then use the key.
*/
if (!is_numeric($key) && is_array($column) && !array_has($column, 'field')) {
$column['field'] = $key;
}
/*
* If the key is non-numerical and
* the column is an array without
* a value then use the key.
*/
if (!is_numeric($key) && is_array($column) && !isset($column['value'])) {
$column['value'] = $key;
}
/*
* If no value wrap is set
* then use a default.
*/
array_set($column, 'wrapper', array_get($column, 'wrapper', '{value}'));
/*
* If there is no value then use NULL
*/
array_set($column, 'value', array_get($column, 'value', null));
}
$builder->setColumns($columns);
}
示例4: resolve
/**
* Resolve table views.
*
* @param TableBuilder $builder
*/
public function resolve(TableBuilder $builder)
{
$this->resolver->resolve($builder->getColumns(), compact('builder'));
}
示例5: evaluate
/**
* Evaluate the table columns.
*
* @param TableBuilder $builder
*/
public function evaluate(TableBuilder $builder)
{
$builder->setColumns($this->evaluator->evaluate($builder->getColumns(), compact('builder')));
}
示例6: guess
/**
* Guess the sortable flags for headers.
*
* @param TableBuilder $builder
*/
public function guess(TableBuilder $builder)
{
$columns = $builder->getColumns();
$stream = $builder->getTableStream();
foreach ($columns as &$column) {
if ($builder->getTableOption('sortable_headers') === false) {
$column['sortable'] = false;
continue;
}
/*
* If the heading is false or does not exist
* then the intent was to not have
* heading text at all.
*/
if (!isset($column['heading']) || $column['heading'] === false) {
continue;
}
/*
* If sortable is already set the we don't
* need to guess anything.
*/
if (isset($column['sortable'])) {
continue;
}
/*
* If the sort column is set and
* sortable is not yet, set it.
*/
if (isset($column['sort_column'])) {
$column['sortable'] = true;
continue;
}
/*
* No stream means we can't
* really do much here.
*/
if (!$stream instanceof StreamInterface) {
continue;
}
/*
* We're going to be using the value to
* try and determine if a streams field is
* being used. No value, no guess.
*/
if (!isset($column['value']) || !$column['value'] || !is_string($column['value'])) {
continue;
}
/*
* Now we're going to try and determine
* what streams field this column if
* using if any at all.
*/
$field = $column['value'];
/*
* If the value matches a field
* with dot format then reduce it.
*/
if (preg_match("/^entry.([a-zA-Z\\_]+)/", $column['value'], $match)) {
$field = $match[1];
}
/*
* If we can't determine a field type
* then we don't have anything to base
* our guess off of.
*/
if (!($assignment = $stream->getAssignment($field))) {
continue;
}
$type = $assignment->getFieldType();
/*
* If the field type has a database
* column type then we can sort on it
* by default!
*
* @todo: Allow sorting of translatable fields.
*/
if ($type->getColumnType() && !$assignment->isTranslatable()) {
$column['sortable'] = true;
$column['sort_column'] = $type->getColumnName();
} else {
$column['sortable'] = false;
}
}
$builder->setColumns($columns);
}
示例7: guess
/**
* Guess the field for a column.
*
* @param TableBuilder $builder
*/
public function guess(TableBuilder $builder)
{
$columns = $builder->getColumns();
$stream = $builder->getTableStream();
$module = $this->modules->active();
foreach ($columns as &$column) {
/*
* If the heading is already set then
* we don't have anything to do.
*/
if (isset($column['heading'])) {
continue;
}
/*
* If the heading is false, then no
* header is desired at all.
*/
if (isset($column['heading']) && $column['heading'] === false) {
continue;
}
/*
* No stream means we can't
* really do much here.
*/
if (!$stream instanceof StreamInterface) {
continue;
}
if (!isset($column['field']) && is_string($column['value'])) {
$column['field'] = $column['value'];
}
/*
* If the heading matches a field
* with dot format then reduce it.
*/
if (isset($column['field']) && preg_match("/^entry.([a-zA-Z\\_]+)/", $column['field'], $match)) {
$column['field'] = $match[1];
}
/*
* Detect some built in columns.
*/
if (in_array($column['field'], ['id', 'created_at', 'created_by', 'updated_at', 'updated_by'])) {
$column['heading'] = 'streams::entry.' . $column['field'];
continue;
}
/*
* Detect entry title.
*/
if (in_array($column['field'], ['view_link', 'edit_link']) && ($field = $stream->getTitleField())) {
$column['heading'] = $field->getName();
continue;
}
$field = $stream->getField(array_get($column, 'field'));
/*
* Detect the title column.
*/
$title = $stream->getTitleField();
if ($title && !$field && $column['field'] == 'title' && $this->translator->has($heading = $title->getName())) {
$column['heading'] = $heading;
}
/*
* Use the name from the field.
*/
if ($field && ($heading = $field->getName())) {
$column['heading'] = $heading;
}
/*
* If no field look for
* a name anyways.
*/
if ($module && !$field && $this->translator->has($heading = $module->getNamespace('field.' . $column['field'] . '.name'))) {
$column['heading'] = $heading;
}
/*
* If no translatable heading yet and
* the heading matches the value (default)
* then humanize the heading value.
*/
if (!isset($column['heading']) && $this->config->get('streams::system.lazy_translations')) {
$column['heading'] = ucwords($this->string->humanize($column['field']));
}
/*
* If we have a translatable heading and
* the heading does not have a translation
* then humanize the heading value.
*/
if (isset($column['heading']) && str_is('*.*.*::*', $column['heading']) && !$this->translator->has($column['heading']) && $this->config->get('streams::system.lazy_translations')) {
$column['heading'] = ucwords($this->string->humanize($column['field']));
}
/*
* Last resort.
*/
if ($module && !isset($column['heading'])) {
$column['heading'] = $module->getNamespace('field.' . $column['field'] . '.name');
}
}
//.........这里部分代码省略.........