Class „App\Presenters\stdClass“ does not exist

Dino
Člen | 7
+
0
-

Dobrý den, omlouvám se, že to zde plevelím, ale dva dny nemohu přijít na to, proč to nejde.
A to kopíruji návod pro odeslání dat z formuláře emailem. https://doc.nette.org/…contact-form
Prostředí: Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12 vše na localhostu jako DEV prostředí

composer.json

"name": "nette/web-project",
	"description": "Nette: Standard Web Project",
	"keywords": ["nette"],
	"type": "project",
	"license": ["MIT", "BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
	"require": {
		"php": ">= 8.0",
		"nette/application": "^3.1",
		"nette/bootstrap": "^3.2",
		"nette/caching": "^3.2",
		"nette/database": "^3.1",
		"nette/di": "^3.1",
		"nette/forms": "^3.1",
		"nette/http": "^3.2",
		"nette/mail": "^4.0",
		"nette/robot-loader": "^4.0",
		"nette/security": "^3.1",
		"nette/utils": "^4.0",
		"latte/latte": "^3.0",
		"tracy/tracy": "^2.9"
	},
	"require-dev": {
		"nette/tester": "^2.4",
		"symfony/thanks": "^1"

Chyba ReflectionException #-1 Class „App\Presenters\stdClass“ does not exist
Odkazuji se na řádek 157 v File: …\mailform\vendor\nette\forms\src\Forms\Container.php:157

147:         * @return object|array
148:         */
149:        public function getUntrustedValues($returnType = ArrayHash::class, ?array $controls = null)
150:        {
151:            if (is_object($returnType)) {
152:                $obj = $returnType;
153:                $rc = new \ReflectionClass($obj);
154:
155:            } else {
156:                $returnType = ($returnType ?? $this->mappedType ?? ArrayHash::class);
157:                $rc = new \ReflectionClass($returnType === self::Array ? \stdClass::class : $returnType);

158:                if ($rc->hasMethod('__construct') && $rc->getMethod('__construct')->getNumberOfRequiredParameters()) {
159:                    $obj = new \stdClass;
160:                    $useConstructor = true;
161:                } else {

Při zavolání stránky, se zobrazí formulář, vyplním jej a po submitu je následující chyba, která ale míří do kódu, který jsem nedělal.
Děkuji

Editoval Dino (10. 1. 11:15)

Marek Bartoš
Nette Blogger | 1177
+
+4
-

Vyhledej ve stacktrace svůj formulář. Buď v callbacku vyžaduješ nebo do volání getUntrustedValues() přímo předáváš název třídy stdClass, ale nemáš pro ni absolutní namespace nebo import statement, a tak se bere z aktuálního namespace.

Pokud používáš IDE (ideálně PHPStorm), tak by ti měl hlásit neexistující třídu stdClass v místě jejího použití.

Potřebuješ zapsat buď \stdClass nebo use stdClass

Editoval Marek Bartoš (10. 1. 11:39)

Dino
Člen | 7
+
0
-

Marek Bartoš napsal(a):

Vyhledej ve stacktrace svůj formulář. Buď v callbacku vyžaduješ nebo do volání getUntrustedValues() přímo předáváš název třídy stdClass, ale nemáš pro ni absolutní namespace nebo import statement, a tak se bere z aktuálního namespace.

Pokud používáš IDE (ideálně PHPStorm), tak by ti měl hlásit neexistující třídu stdClass v místě jejího použití.

Potřebuješ zapsat buď \stdClass nebo use stdClass

Děkuji. Měl jste pravdu. Stačilo do HomePresenter.php dopsat use stdClass;
Mimochodem používám IDE Atom a tam mi nic nesignalizuje. Že to není v pořádku hlásil PHPStorm a nabídnul opravu přesně v tom duchu, co jste psal. Ještě jednou díky.

P.S. Teď to už hlásí chybu SMTP serveru, že neakceptuje plain text, ale na to snad přijdu. :-)