Kdyby translation do FormFactory

Newer
Člen | 47
+
0
-

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)

MajklNajt
Člen | 470
+
0
-

v továrni nasetuj translator do formulára

$form->setTranslator($this->translator);