PHP Nette - inject interface do komponenty nefunguje

Co nejvíce stručné řešení pro vývojáře a linux administrátory

Na superuser.cz nenaleznete žádný zbytečný obsah, vždy se jde přímo k věci, denně se zde objevují nové problémy a jejich řešení...

Začít používat

PHP Nette - inject interface do…

30.06.2019 napsal NetteInterface

Vyřešeno PHP Nette - inject interface to control dont work
Dobrý den,

tak ještě jeden problém, nefunguje mně patrně inject IEmailsFactory do komponenty ContactForm, kdy dostavám zase chybu:

PHP Nette - Warning Creating default object from empty value


 namespace App\Forms;

use Nette;
use App\Model\Logs;
use App\Model\Settings;
use App\Model\IEmailsFactory;
use Nette\Application\UI\Form;

class ContactForm extends Nette\Application\UI\Form
{
    use Nette\SmartObject;

     private $modelLogs;

     private $modelSettings;

    /**
    * @inject
    * @var IEmailsFactory */
    public $emailsFactory;

    /** @var Nette\Database\Context */
    protected $database;

    public function __construct(Nette\Database\Context $database, Settings $modelSettings, Logs $modelLogs)
    {
        $this->database       = $database;
        $this->modelLogs      = $modelLogs;
        $this->modelSettings	= $modelSettings;
    }

    /**
     * @return Form
     */
    public function create()
    {
		$form = new Form;
                .........

		return $form;
    }

		public function processForm($form, $values)
		{
                ........
               $email = $this->emailsFactory->create();
                .......
}
Nejlépe hodnocení uživatelé
Hanz

Počet UP: 4857

React: 211

Rusty

Počet UP: 2250

React: 94

OL3G

Počet UP: 1569

React: 59

SYSTEM

Počet UP: 403

React: 23

Strosmajer

Počet UP: 460

React: 22

Oxytocin

Počet UP: 276

React: 15

Hyacint

Počet UP: 17

React: 10

RE: PHP Nette - inject interface…

13.07.2019 odpověděl NetteInterface

Zkontrolováno

Co jsem se dočetl, tak Inject anotace nelze v Nette ve výchozím stavu použít mimo presentery, takže se inject musel provést přes kontstruktor:


class ContactForm extends Nette\Application\UI\Form
{
use Nette\SmartObject;

private $modelLogs;

private $modelSettings;

public $emailsFactory;

/** @var Nette\Database\Context */
protected $database;

public function __construct(Nette\Database\Context $database, Settings $modelSettings, Logs $modelLogs, IEmailsFactory $emailsFactory)
{
$this->database = $database;
$this->modelLogs = $modelLogs;
$this->modelSettings = $modelSettings;
$this->emailsFactory = $emailsFactory;
}
Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace