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
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:
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;
}