PHP Nette - inject interface do komponenty nefunguje

PHP Nette - inject interface do komponenty nefunguje

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();
.......
}



ODPOVĚĎ


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;
}
Jak se ti článek líbil?

Komentáře (0)

Přidat komentář