problem s vytvorenm formu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
cujan
Člen | 410
+
0
-

chybova hlaska
Argument 1 passed to App\Forms\RecordFormFactory::__construct() must be an instance of App\Forms\FormFactory, none given, called in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\aaa\app\presenters\HomepagePresenter.php on line 33 and defined

<?php

namespace App\Forms;

use Nette;
use Nette\Application\UI\Form;


class FormFactory
{
	use Nette\SmartObject;

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

}
namespace App\Forms;

use Nette\Application\UI\Form,
    App\Forms\FormFactory;

/**
 * Description of RecordFormFactory
 *
 * @author Holub
 */
class RecordFormFactory {



    /** @var FormFactory */
    private $factory;

    public function __construct(FormFactory $factory)
    {
	$this->factory = $factory;
    }

    /**
     * @return Form formulár pre zápis záznamov
     */
    public function create()
    {
	$form = $this->factory->create();
	$form->addHidden('creationDate')->setValue(date('Y-m-d'));
	return $form;
    }
}

presenter

/** @var ArticleManager Instance třídy modelu pro práci s články. */
    protected $recordManager;

    /**
    * Konstruktor s injektovaným modelem pro práci s články.
    * @param ArticleManager $articleManager automaticky injektovaná třída modelu pro práci s články
    */
    public function __construct(RecordManager $recordManager)
    {
        parent::__construct();
        $this->recordManager = $recordManager;
    }
    public function renderDefault()
    {
	$this->template->records = $this->recordManager->getRecords();
    }

    protected function createComponentRecordForm()
    {
	$form = (new RecordFormFactory())->create();
	return $form;
    }
CZechBoY
Člen | 3608
+
0
-

Předej si RecordFormFactory přes konstruktor (nezapomeň zaregistrovat továrničku jako službu v config.neon).

cujan
Člen | 410
+
0
-

CZechBoY napsal(a):

Předej si RecordFormFactory přes konstruktor (nezapomeň zaregistrovat továrničku jako službu v config.neon).

oki vdaka pomohlo…

cujan
Člen | 410
+
0
-

CZechBoY napsal(a):

Předej si RecordFormFactory přes konstruktor (nezapomeň zaregistrovat továrničku jako službu v config.neon).

no uz som z toho jelen…mam to predane a dnes spustim aplikaciu a yas ta ista hlaska, temp som zmazal

/** @var ArticleManager Instance třídy modelu pro práci s články. */
    protected $recordManager;
    protected $recordFormFactory;
    /**
    * Konstruktor s injektovaným modelem pro práci s články.
    * @param ArticleManager $articleManager automaticky injektovaná třída modelu pro práci s články
    */
    public function __construct(RecordManager $recordManager, RecordFormFactory $recordFormFactory)
    {
        parent::__construct();
        $this->recordManager = $recordManager;
	$this->recordFormFactory = $recordFormFactory;
    }

    public function renderDefault()
    {
    $this->template->records = $this->recordManager->getRecords();
    }

    public function createComponentRecordForm()
    {
    $form = (new RecordFormFactory())->create();
    return $form;
    }
David Matějka
Moderator | 6445
+
+2
-

tu injectnutou recordFormFactory musis vyuzit. kdyz tam znovu vytvaris instanci pres new, tak by ti byla celkem k nicemu :))

CZechBoY
Člen | 3608
+
+1
-

Nebo-li přepiš createComonent nějak takhle

protected function createComponentRecordForm() /* protected stačí */
{
    $form = $this->recordFormFactory->create();
    return $form;
}