Хроники Yii3
617 subscribers
43 photos
1.7K links
Описание процесса разработки фреймворка из первых рук 😎

Обсуждение:
https://t.me/yii3ru

Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0

Поддержать разработчиков:
https://opencollective.com/yiisoft
Download Telegram
#yiisoftFormModel

Yii Form Model

Доработали поля форм в Yii Form таким образом, чтобы их можно было использовать независимо от модели формы. Это позволило выделить модель формы в отдельный пакет.

Теперь в Yii Form остались только виджеты полей форм, которые зависят только от трёх пакетов: Yii Friendly Exception, Yii HTML и Yii Widget. А «тяжёлые» же зависимости (валидатор, гидратор) переехали в новый пакет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11👾2
#yiisoftFormModel #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Form Model 1.0

Пакет предоставляет основу для реализации моделей форм и помогает в их наполнении, валидации и отображении.

Пример формы:

use Yiisoft\FormModel\Attribute\Safe;
use Yiisoft\FormModel\FormModel;
use Yiisoft\Validator\Rule\Email;
use Yiisoft\Validator\Rule\Length;
use Yiisoft\Validator\Rule\Required;

final class LoginForm extends FormModel
{
#[Label('Your login')]
#[Required]
#[Length(min: 4, max: 40, skipOnEmpty: true)]
#[Email(skipOnEmpty: true)]
private ?string $login = null;

#[Label('Your password')]
#[Required]
#[Length(min: 8, skipOnEmpty: true)]
private ?string $password = null;

#[Label('Remember me for 1 week')]
#[Safe]
private bool $rememberMe = false;
}


Пример обработки формы:

public function login(
RequestInterface $request,
FormHydrator $formHydrator
): ResponseInterface
{
$formModel = new LoginForm();
if ($formHydrator->populateFromPostAndValidate($formModel, $request)) {
$errors = $formModel->getValidationResult()->getErrorMessagesIndexedByProperty();
}
// You can pass $formModel and $errors to the view now.
}


Пример отображения формы:

use Yiisoft\FormModel\Field;
use Yiisoft\FormModel\FormModel;

echo Field::text($formModel, 'login');
echo Field::password($formModel, 'password');
echo Field::checkbox($formModel, 'rememberMe');
20🔥13👍5🎉2
#yiisoftFormModel #ПатчРелиз #Релиз

🎁 Yii Form Model 1.0.1

• Пакет адаптирован к изменениям в последней версии валидатора. В модели формы разрешено наполнять только те поля, где есть правила валидации. Теперь правила валидации считываются одновременно и с PHP-атрибутов и из метода getRules().
1🔥61
#yiisoftFormModel #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii File Router 1.0

Первая стабильная версия роутера, основанного на соглашении о размещении контроллеров в определённых пространствах имён (похоже на Yii2). Роутер представляет собой PSR-15 мидлварь и может использоваться как самостоятельно, так и совместно с другим роутером.

Пример структуры:

src/
Controller/
User/
Profile/
IndexController.php
BlogController.php
UserController.php
IndexController.php


Работает это так:

GET /IndexController::index()
GET /userUserController::index()
POST /userUserController::create()
GET /user/blog/viewUser/BlogController::view()
GET /user/profileUser/Profile/IndexController::index()

Подробнее см. в документации.
👍17👾4🔥31
#yiisoftFormModel #ПатчРелиз #Релиз

🎁 Yii Form Model 1.0.2

• При отображении ошибок учитывается вложенность свойств.

• При генерации названия поля учитывается вложенность свойств.

• Ограничение версии PHP в composer.json изменено на 8.1 - 8.4.
👍3👾2