【发布时间】:2019-07-01 20:47:39
【问题描述】:
这是我在 Symfony 4 中非常简单的课程:
namespace App\Controller;
class T_contact
{
public $email;
public $name;
/**
* Constructor.
*
* @param string $email
* @param string $name
*/
public function __construct( $email, $name) {
$this->email = $email;
$this->name = $name;
}
但我总是得到: 无法自动装配服务“App\Controller\T_contact”:方法“__construct()”的参数“$email”没有类型提示,您应该明确配置其值。
我试过了: “...__construct(字符串 $email,字符串 $name)” 但我收到几乎相同的消息,除了: "... 是类型提示的"字符串",你应该配置...
我不明白。 欢迎任何线索...
【问题讨论】:
-
问题是 autowire 试图自动将 T_conact 设置为服务。当然不是。将 T_contact 移动到 Entity 等目录中,然后在 services.yaml 文件中排除实体目录。
-
你的
config.yml/services.yaml看起来怎么样? -
是来自骨架项目的那个,但是不知道怎么贴到这里(太长了)... :(
-
之所以有效,是因为实体目录已被排除在开箱即用的 services.yaml 文件中。您可以调整您的服务文件以明确排除 T_contact,无论它在哪里。这实际上是一个非常重要的概念。你会一遍又一遍地遇到同样的问题,直到你明白为什么。虽然 T_contact 不是 Doctrine 实体,但它确实像一个一般实体。
标签: symfony