ArtiGrid
v1.5

Crud for Api


<?php
    // 1. Consume the API with cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://jsonplaceholder.typicode.com/todos");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    // 2. Convert to array
    $data = json_decode($response, true);

    // 3. Take only the first 20 records
    $data = array_slice($data, 0, 20);

    // 4. Create rows for the grid with the fields you need
    $rows = [];
    foreach ($data as $item) {
        $id = $item['id'];
        $rows[] = [
            'id' => $id,
            'name' => "Usuario $id",
            'email' => "usuario$id@mail.com",
            'created_at' => date('Y-m-d', strtotime("-$id days")),
            'title' => $item['title'],
            'completed' => $item['completed'] ? 'Sí' : 'No'
        ];
    }

    // 5. Define grid columns
    $columns = [
        ['name'=>'id','label'=>'ID','type'=>'number'],
        ['name'=>'name','label'=>'Nombre','type'=>'text'],
        ['name'=>'email','label'=>'Correo','type'=>'text'],
        ['name'=>'created_at','label'=>'Fecha','type'=>'date'],
        ['name'=>'title','label'=>'Título','type'=>'text'],
        ['name'=>'completed','label'=>'Completado','type'=>'text'],
    ];

    // 6. Create and configure the grid
    $grid = new ArtiGrid();
    $grid->perPage(10);
    $grid->addCustomBtn(
        'btn btn-sm btn-info', // class
        'ver',                 // action JS
        '', // icon
        []                     // conditions
    );

    // 7. Prepare JSON for the grid
    $jsonData = [
        'columns' => $columns,
        'rows' => $rows
    ];

    // 8. Render the grid
    echo $grid->crudJson($jsonData)->render();
?>

<script>
    document.addEventListener('click', function (e) {
        const btn = e.target.closest('.view_action');
        if (!btn) return;

        alert('demo');

        // example: read data-attributes 
        // console.log(btn.dataset.id, btn.dataset.action);
    }, true);
</script>
id name email created_at title completed Actions