predani parametru do komponenty pres interface

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

ahoj mam

presenter:

/** @var \App\FrontModule\Components\Nabidky\Factories\ILevySloupekVyhledavaniControlFactory @inject */
    public $LevySloupekVyhledavaniControlFactory;

    protected function createComponentLevySloupekVyhledavaniControl()
    {
        $id = 1;
        $cmp = $this->LevySloupekVyhledavaniControlFactory->create($id);

        return $cmp;
    }

neon:

service
	- App\FrontModule\Components\Nabidky\Factories\ILevySloupekVyhledavaniControlFactory(%id%)

factory:

namespace App\FrontModule\Components\Nabidky\Factories;



interface ILevySloupekVyhledavaniControlFactory
{

    /**
     * @param  $id
     * @return \App\FrontModule\Components\Nabidky\LevySloupekVyhledavaniControl
     */

    public function create($id);

}

a componentu:

namespace App\FrontModule\Components\Nabidky;


class LevySloupekVyhledavaniControl
		extends \App\Components\Components
{

    private $id;

    /**
     * @param $id
     */
    function __construct($id)
    {

        $this->id = $id;
    }

a vysledek:

Nette\InvalidArgumentException
Missing parameter 'id'.

prijde mi ze ID vsude predavam :(

igor.pocta
Člen | 100
+
0
-

V neon configu odstraň (%ID%)

? Od čeho to dědíš? \App\Components\Components dědí od UI\Applicaiton\Control?

Editoval igor.pocta (2. 3. 2017 8:49)

vosy
Člen | 532
+
0
-

igor.pocta napsal(a):

V neon configu odstraň (%ID%)

? Od čeho to dědíš? \App\Components\Components dědí od UI\Applicaiton\Control?

dedi od:

namespace App\Components;

class Components
		extends \Nette\Application\UI\Control

kdyz jsem z neonu odstranil (%id%)
vysledek

Service ‚187_App_FrontModule_Components_Nabidky_LevySloupekVyhledavaniControl‘: Parameter $id in App\FrontModule\Components\Nabidky\LevySloupekVyhledavaniControl::__construct() has no type hint, so its value must be specified.

Editoval vosy (2. 3. 2017 8:53)

David Matějka
Moderator | 6445
+
0
-

co mas za verzi nette?

vosy
Člen | 532
+
0
-

David Matějka napsal(a):

co mas za verzi nette?

2.3.1

CZechBoY
Člen | 3608
+
0
-

Zkus smáznout cache Nette.Configurator, pokud si tak ještě neudělal.

vosy
Člen | 532
+
0
-

CZechBoY napsal(a):

Zkus smáznout cache Nette.Configurator, pokud si tak ještě neudělal.

Nepomohlo to :(

vosy
Člen | 532
+
0
-

NEvim co poslat aby to pomohlo.

.../vendor/nette/di/src/DI/Helpers.php:35	source  Nette\DI\Helpers::	expand (arguments)

.../vendor/nette/di/src/DI/Helpers.php:40	source  Nette\DI\Helpers::	expand (arguments)

.../vendor/nette/di/src/DI/Compiler.php:266	source  Nette\DI\Helpers::	expand (arguments)

.../vendor/nette/di/src/DI/Compiler.php:197	source  Nette\DI\Compiler::	parseServices (arguments)

.../vendor/nette/di/src/DI/Compiler.php:140	source  Nette\DI\Compiler->	processServices ()

.../vendor/nette/bootstrap/src/Bootstrap/Configurator.php:268	source  Nette\DI\Compiler->	compile ()

inner-code	Nette\Configurator->	generateContainer (arguments)

.../vendor/nette/di/src/DI/ContainerLoader.php:113	source  call_user_func_array (arguments)

.../vendor/nette/di/src/DI/ContainerLoader.php:78	source  Nette\DI\ContainerLoader->	generate (arguments)

.../vendor/nette/di/src/DI/ContainerLoader.php:43	source  Nette\DI\ContainerLoader->	loadFile (arguments)

.../vendor/nette/bootstrap/src/Bootstrap/Configurator.php:221	source  Nette\DI\ContainerLoader->	load (arguments)

.../app/bootstrap.php:36	source  Nette\Configurator->	createContainer ()

.../www/index.php:6	source  require (arguments)
David Matějka
Moderator | 6445
+
0
-

ukaz jak to tedka presne mas (tzn tovarna, komponenta, neon)

vosy
Člen | 532
+
0
-

AHoj

Presenter:

 /** @var \App\FrontModule\Components\Nabidky\Factories\ILevySloupekVyhledavaniControlFactory @inject */
    public $LevySloupekVyhledavaniControlFactory;


protected function createComponentLevySloupekVyhledavaniControl()
    {
        $id = 'ss';
        $cmp = $this->LevySloupekVyhledavaniControlFactory->create($id);

        return $cmp;
    }

config

services:
	- App\FrontModule\Components\Nabidky\Factories\ILevySloupekVyhledavaniControlFactory(%id%)

pred tim mma samozrejme jeste jine SERVICES

interface

namespace App\FrontModule\Components\Nabidky\Factories;



interface ILevySloupekVyhledavaniControlFactory
{

    /**
     * @param  $id
     * @return \App\FrontModule\Components\Nabidky\LevySloupekVyhledavaniControl
     */

    public function create($id);

}

Control:

namespace App\FrontModule\Components\Nabidky;


class LevySloupekVyhledavaniControl
		extends \App\Components\Components
{

    private $id;

    /**
     * @param $id
     */
    function __construct($id)
    {

        $this->id = $id;
    }


	/* RENDER */
    function render()
    {
JZechy
Člen | 161
+
+1
-

@vosy V tom configu dej pryč %id%, ten parametr tam vkládáš v rámci PHP, né jako parametr z neon konfigurace.