FormBuilder

Tworzenie własnej klasy tworzącej formularz.

Namespace

Nimblephp\form\FormBuilder

Zmienne

  • public Form $form: Instancja formularza.
  • public array $models = []: Tablica załadowanych modeli.
  • protected MethodEnum $method = MethodEnum::POST: Metoda HTTP formularza, domyślnie POST.
  • protected ?string $action = null: Adres URL docelowy formularza.
  • protected ?ControllerInterface $controller = null: Instancja kontrolera.
  • protected Request $request: Instancja request
  • protected array $data = []: Dane wejściowe formularza.
  • protected array $postData = []: Dane przesłane przez formularz.

Metody

__construct

public function __construct(?ControllerInterface $controller = null)

Inicjalizacja klasy z opcjonalnym parametrem $controller.

generate

public static function generate(string $name, ?ControllerInterface $controller = null, array $data = []): string

Generowanie formularza

addError

public function addError(string $name, string $error): void

Ręczne dodanie błędu walidacji

log

public function log(string $message, string $level = 'INFO', array $content = []): bool
Argumenty
string $message: Treść loga
string $level = 'INFO': Poziom loga
array $content = []: Dodatkowe dane loga

Dodanie loga

loadModel

public function loadModel(string $name): AbstractModel
Argumenty
string $name: Nazwa modelu

Metoda loadModel służy do ładowania modelu na podstawie podanej nazwy.

Po załadowaniu modelu znajduje się on w tablicy $models oraz jest możliwość do odwołanai się do niego za pomocą zmiennej z CamelCase np.:

$this->loadModel('testowy_model');
// odwołanie do modelu
$this->TestowyModel->...

Przykłady

Formularz

<?php

namespace src\Form;

class login extends \Nimblephp\form\FormBuilder
{

    public function init(): void
    {
        $this->form->setId('login');
    }

    /**
     * create form
     * @return void
     */
    public function create(): void
    {
        $this->form->addInput('account/login', 'Login');
        $this->form->addInput('account/password', 'Hasło', ['type' => 'password']);
        $this->form->addSubmitButton('Login');
    }

    /**
     * validation form
     * @return array
     */
    public function validation(): array
    {
        return [
            'account/login' => [
                'required',
                'length' => ['min' => 8, 'max' => 128]
            ],
            'account/password' => [
                'required',
                'length' => ['min' => 6, 'max' => 70]
            ]
        ];
    }

    /**
     * submit form
     * @return void
     * @throws DatabaseException
     * @throws NimbleException
     * @throws NotFoundException
     */
    public function onSubmit(): void
    {
        var_dump('Success login submit');
    }
}