Skip to content

Commit 7907741

Browse files
committed
refactor add column functions
1 parent 7892852 commit 7907741

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

src/app/Library/CrudPanel/Traits/Columns.php

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,26 +66,17 @@ public function setColumns($columns)
6666
*/
6767
public function addColumn($column)
6868
{
69-
$column = $this->makeSureColumnHasNeededAttributes($column);
70-
$this->addColumnToOperationSettings($column);
71-
72-
(new CrudColumn($column['name']))->callRegisteredAttributeMacros();
69+
$this->prepareAttributesAndAddColumn($column);
7370

7471
return $this;
7572
}
7673

7774
/**
78-
* Add a column at the end of to the CRUD object's "columns" array and return it.
79-
*
80-
* @param array|string $column
81-
* @return self
75+
* Add a column at the end of the CRUD object's "columns" array and return it
8276
*/
83-
public function addAndReturnColumn($column)
77+
public function addAndReturnColumn(array|string $column): CrudColumn
8478
{
85-
$column = $this->makeSureColumnHasNeededAttributes($column);
86-
$this->addColumnToOperationSettings($column);
87-
88-
$column = (new CrudColumn($column['name']))->callRegisteredAttributeMacros();
79+
$column = $this->prepareAttributesAndAddColumn($column);
8980

9081
return $column;
9182
}

src/app/Library/CrudPanel/Traits/ColumnsProtectedMethods.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Backpack\CRUD\app\Library\CrudPanel\Traits;
44

5+
use Backpack\CRUD\app\Library\CrudPanel\CrudColumn;
56
use Illuminate\Support\Arr;
67
use Illuminate\Support\Str;
78

@@ -325,4 +326,17 @@ protected function hasDatabaseColumn($table, $name)
325326

326327
return in_array($name, $columns);
327328
}
329+
330+
/**
331+
* Prepare the column attributes and add it to operation settings
332+
*/
333+
private function prepareAttributesAndAddColumn(array|string $column): CrudColumn
334+
{
335+
$column = $this->makeSureColumnHasNeededAttributes($column);
336+
$this->addColumnToOperationSettings($column);
337+
338+
$column = (new CrudColumn($column['name']))->callRegisteredAttributeMacros();
339+
340+
return $column;
341+
}
328342
}

tests/Unit/CrudPanel/CrudPanelColumnsTest.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -621,10 +621,14 @@ public function testItCanAddAColumnToCrudFromClass()
621621
CrudColumn::name('test');
622622
$this->assertCount(1, $this->crudPanel->columns());
623623
}
624-
625624
public function testItCanAddAFluentColumnUsingArray()
626625
{
627626
$this->crudPanel->column($this->oneColumnArray);
628627
$this->assertCount(1, $this->crudPanel->columns());
629628
}
629+
public function testItCanAddAFluentColumnUsingArrayWithoutName()
630+
{
631+
$this->crudPanel->column(['type' => 'text']);
632+
$this->assertCount(1, $this->crudPanel->columns());
633+
}
630634
}

0 commit comments

Comments
 (0)