Introduction

PhoenixGrid is a helper to operate table list includes sort, batch, select and ordering.

It will auto included in Phoenix admin template, or use this PHP code to init it:

\Phoenix\Script\PhoenixScript::grid();

// OR add custom selector of your <form >

\Phoenix\Script\PhoenixScript::grid('#my-form');

Sort

Sort this table by a column name:

// JS
Phoenix.Grid.sort('created', 'DESC');

After this method called, the form will auto submit and refresh page.

This method will send list_ordering and list_direction two variables to controller then you can use them to rebuild your SQL.

Check Row

Tick a checkbox of specify row.

// JS

// Start row is 0, so we tick the second row.
Phoenix.Grid.checkRow(1);

p-2016-07-21-002

You must print a checkbox with row number in HTML:

<input type="checkbox" class="grid-checkbox" data-row-number="1" name="id[]" value="2">

Or use GridHelper to generate this checkbox in template:

{{-- In Edge --}}

@foreach ($items as $i => $item)
    @php($grid->setItem($item, $i))
    <tr>
        {{-- CHECKBOX --}}
        <td>
            {!! $grid->checkbox() !!}
        </td>

    {{-- ... --}}

@endforeach

Update Row

This method can update a row with specify data by sending request to BatchController:

// JS

Phoenix.Grid.updateRow(3, null, {task: 'publish'});

This method will update row 3 state => 1.

You must prepare checkboxes in HTML first to support this method

Send Batch Task

Send a batch task to update rows:

Phoenix.Grid.batch('unpublish');

Copy Row

Send a request to duplicate a row:

Phoenix.Grid.copyRow(3);

Delete List

Delete checked rows.

Phoenix.Grid.deleteList();

// Add custom confirm message
Phoenix.Grid.deleteList('Are you sure?');

Delete Row

Phoenix.Grid.deleteRow(3);

Toggle All Checkboxes

Phoenix.Grid.toggleAll();

More Methods

// Count checked checkboxes
Phoenix.Grid.countChecked();

// Get Checked boxes
Phoenix.Grid.getChecked();

// Validate there has one or more checked boxes.
// The method will throw Error instantly if no checked
try
{
    Phoenix.Grid.hasChecked().batch(...);
}
catch (Error)
{
    // ...
}

// Reorder
Phoenix.Grid.reorderAll();
Phoenix.Grid.reorder();

Multi-Select

Use this script you can press shift + click to select multiple checkboxes:

\Phoenix\Script\PhoenixScript::multiSelect();

// Custom selector
\Phoenix\Script\PhoenixScript::multiSelect('#my-form table');

multi-select


If you found a typo or error, please help us improve this document.