Быстрый вопрос, надеюсь, легко решаемый, я просто застрял.
Допустим, у меня есть таблица User
, в которой есть строковый столбец address
. Используя пакет EasyAdmin, я могу очень легко сделать это:
Это великолепно для моего табличного представления, но что, если я хочу разделить адрес на street
, houseNumber
и zipCode
в моем потоке создания? Мой адрес имеет такую форму: street houseNumber, zipCode
и он определен в этом классе:
Теперь мне нужно найти способ разделить адрес на 3 поля формы при редактировании и создании и объединить их обратно после отправки формы.
yield TextField::new('address', 'Address')->onlyOnIndex();
<?php
declare(strict_types=1);
namespace App\Domain\UserManagement\VO;
use Assert\Assertion;
use Assert\AssertionFailedException;
final class Address
{
private string $address;
public function __construct(private string $street, private string $houseNumber, private string $zipcode)
{
$this->validateStreet($this->street);
$this->validateZipcode($this->zipcode);
$this->createAddress();
}
public function value(): string
{
return $this->address;
}
private function createAddress(): void
{
$this->address = $this->street . ' ' . $this->houseNumber . ', ' . $this->zipcode;
}
private function validateStreet(string $street): void
{
try {
Assertion::notEmpty($street, 'Street cannot be empty');
Assertion::string($street, 'Street must be a valid string');
Assertion::minLength($street, 1, 'Street cannot be blank');
} catch (AssertionFailedException $e) {
throw new \InvalidArgumentException($e->getMessage());
}
}
private function validateZipcode(string $zipcode): void
{
try {
Assertion::numeric($zipcode, 'Zipcode must contain only numbers');
} catch (AssertionFailedException $e) {
throw new \InvalidArgumentException($e->getMessage());
}
}
}
Лонгин
Вопрос задан15 марта 2024 г.