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
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
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');
}
}