Class „App\Presenters\stdClass“ does not exist
- Dino
- Člen | 7
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
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
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
nebouse 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. :-)