jQuery Ajax

Obsługa ajax API

AppController.php – dodać wpisy dla zainstalowanych pakietów

use CakePdf\View\PdfView;
use Cake\View\JsonView;

class AppController extends Controller


{
  public function viewClasses(): array 
  { 
    return [JsonView::class, PdfView::class]; 
  }
...

Javascript

// Przydzielanie kategorii
let assign_category = function() {
  var category_id  = $(this).data('c-id');
  var category_box = $(this).closest('.category_box');

  if(department_id, category_id) {
    $.ajax({
      url      : '/departments/assign-category.json',
      type     : 'post',
      dataType : 'json',
      data     : {department_id, category_id},
      success  : function(resp) {

        if(resp.response.error) {
          console.log(resp.response.error);
          $("#feedback").text(resp.response.error).removeClass('hidden');
          setTimeout(function(){ $("#feedback").text('').addClass('hidden'); }, 3000);
          return;
        }

        if(category_box) {
           $(category_box).detach();
           $(category_box).find('.icon')
             .removeClass('fas fa-angle-double-right text-primary')
             .removeClass('c-id-wrapper');
             $("#assigned-categories").append(category_box);
             $("#empty-list").remove();  // info o braku przypisań
             updateCounter('assign');
        }
      },
      error    : function(e){ console.error(e)}
    });
  }
};

$('.c-id-wrapper').on('click', assign_category);

API Kontrolera

public function assignCategory()
{
      $response = ['error' => "Nie AJAX."];
      if($this->request->is('ajax'))
      {
        $department_id = (int) $this->request->getParsedBody()['department_id'];
        $category_id   = (int) $this->request->getParsedBody()['category_id'];
        $cd = $this->Departments->CategoriesDepartments->find()
                                ->where(['department_id' => $department_id])
                                ->where(['category_id'   => $category_id])
                                ->first();
        if(!$cd){
          $cd = $this->Departments->CategoriesDepartments->newEmptyEntity();
          $cd->department_id = $department_id;
          $cd->category_id   = $category_id;

          if ($this->Departments->CategoriesDepartments->save($cd)) {
              $response = ['success' => $cd->id];
          } else {
              $response = ['error' => "Nie udało się przydzielić kategorii"];
          }
        } else {
          $response = ['error' => "Takie powiązanie już istnieje"];
        }

        
      }
      $this->viewBuilder()->setClassName('Json');
      $this->set('response', $response);
      $this->viewBuilder()->setOption('serialize', ['response']);
}

UUID

CREATE TABLE `transactions` (
...
`uuid` BIGINT UNSIGNED DEFAULT(uuid_short()),

`uuid` UUID DEFAULT(uuid()),

Windows – generowanie UUID

PowerShell

[guid]::NewGuid().ToString()

9604d3a8-e390-41fa-8863-01fca67adb3c

PHP – 32 bajty

# php -r "echo base64_encode(random_bytes(32));"

O5PPyu3QZtfZD5f6Oj2WaxZdux2k4OJ1vcy0Y4jomJk=

.... gdzieś w kodzie ...
$str = base64_decode($var);

Max upload file:

Pliki które trzeba sprawdzić

/etc/php/8.4/fpm/php.ini

/etc/php/8.4/cli/php.ini

Wartości które trzeb ustawić:

upload_max_filesize: 50M
post_max_size: 50M

Sprawdzenie tylko CLI (nie fpm który faktycznie przesyła pliki przez Apache2)

# php -r "echo 'upload_max_filesize: ' . ini_get('upload_max_filesize') . PHP_EOL; echo 'post_max_size: ' . ini_get('post_max_size').PHP_EOL;"

Komendy: postgres

Sposób wyświetlania

SELECT * FROM tabela \gx        - Odpowiednik \G (dla zapytania)

\x                              - włączenie trybu pionowego na stałe

\x auto                         - przełączenie na pionowy widok tylko wtedy, gdy wiersze są za szerokie dla ekranu


SELECT * FROM tabela \x\g\x    - włącza tryb pionowy, wysła zapytanie i wyłącza tryb w jednej linii
 

Operacje na bazach danych

\l               - lista baz danych

\c moja_baza     - połączenie z bazą

Tabele

\d                      - lista relacji
\dt                     - lista tabel


\d  moja_tabela         - struktura tabeli
\d+ moja_tabela         - szczegóły tabeli: komentarze, rozmiar na dysku,