Kdyby translation do FormFactory
- Newer
- Člen | 47
Už hodinu se tu trápim s tím, že potřebuju dostat kdyby/translation do SignInFormFactory a SignUpFormFactory
Kdyby je @injectovano do basePressenteru, ale rozsireni tovarny
o basePresenter mi neprijde jako dobry nápad.
@injec do továrny nešlape… (není presenter)
a přes konstruktor to vyzhodí stejnou chybu, jako když to tam nemám, tak
jsem bezradnej…
Pro jistotu sem hodím ještě ten konsruktor, přijde mi to přes něj jako správné řešení… třeba už jsem jen přepracovanej a něco mi uniká…
<?php
namespace App\Forms;
use Kdyby\Translation\Translator;
.
.
.
.
class SignInFormFactory {
use SmartObject;
/** @var Translator */
public $translator;
.
.
.
.
/**
* Konstruktor s injektovanou továrnou na formuláře a uživatelem.
* @param FormFactory $factory automaticky injektovaná továrna na formuláře
* @param User $user automaticky injektovaný uživatel
* @parm Translator $translator automaticky injektovaný kdyby/translator
*/
public function __construct(FormFactory $factory, User $user, Translator $translator) {
$this->formFactory = $factory;
$this->user = $user;
$this->translator = $translator;
}
public function create(callable $onSuccess) {
$form = $this->formFactory->create();
$form->addText('username', $this->translator->translate('messages.components.username'))->setRequired();
$form->addPassword('password', $this->translator->translate('messages.components.password'));
$form->addSubmit('login', $this->translator->translate('messages.components.login'));
$form->onSuccess[] = function (Form $form, ArrayHash $values) use ($onSuccess) {
try {
$this->user->login($values->username, $values->password);
$onSuccess($form, $values); // Zavoláme specifickou funkci.
} catch (AuthenticationException $e) {
$form->addError($this->translator->translate('messages.system.loginError'));
}
};
return $form;
}
}
?>
Nějaká rada? Děkuju moc.
Editoval Newer (1. 4. 2020 19:19)