问题标签 [symfony4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Symfony 4 Doctrine 不能从控制台工作 [2002] 没有这样的文件或目录
我正在使用 symfony 4,并且在运行教义控制台命令时出现此错误:
我认为这是因为连接有问题,但是当我运行应用程序时,它可以毫无错误地访问数据库,所以我无法想象连接有什么问题。
我能够通过手动创建数据库并使用
但这确实是不需要的,因为稍后当需要更新架构时,所有数据都会丢失,因为我需要重新创建架构而不是更新它。
该应用程序在手动执行 SQL 后正常工作(easyadmin 工作正常)。
这是我的配置:
.ENV:
教义.yaml:
我尝试了 drop 命令只是为了测试,它抛出了这个:
所以我将 dbname 添加到教义.yaml 并没有工作。我还尝试删除缓存、创建一个新项目、使用远程 mysql 和使用 sqlite,但两种情况下的错误都是一样的!!
在此先感谢您的帮助 !
php - Symfony4 新包自动加载
我想用 SF4 创建一个新的可重用包。我遵循了文档,但如果我在“src”目录中添加我的新包,则会与 App 命名空间和作曲家自动加载发生冲突:
然后,我收到此错误:
PHP 致命错误:未捕获的 Symfony\Component\Debug\Exception\ClassNotFoundException:试图从命名空间“Acme\TestBundle”加载类“AcmeTestBundle”。
我认为这是因为 PSR-4 自动加载器使用错误的命名空间 (App/Acme/TestBundle/AcmeTestBundle.php) 加载了文件。
有没有办法解决这个问题?我也尝试为我的应用程序创建另一个包,但由于 Kernel.php 文件而崩溃...
此后备目录方法也不起作用:
symfony - 交响乐。提交表单后,ArrayCollection 中的 CollectionType 字段不包含单个元素
我的模型包含两个相关的类——RealEstate 和 Image,而 RealEstate 的一个实例可以是很多 Image 的实例。由于 Image 类也可以与其他类关联使用,因此我选择了关系“一对多,单向连接表”。这确保了任何图像都不需要知道它在哪里使用。反过来,RealProperty 类提供了 $images 属性、getImages()、addImage(Image $image) 和 removeImage(Image $image) 方法,并且构造函数中的 $images 由空的 ArrayCollection 定义。所以,我有以下模型类。
1) 应用\实体\RealProperty\RealProperty
2) 应用\实体\平台\图像
对于每个类,我创建了适当的表单类型。
1) App\Form\RealProperty\RealPropertyType
2) App\Form\Platform\ImageType
这是我的控制器中的代码,其中创建了包含 CollectionType 的表单。
但是,必须包含 Image 实例的 ArrayCollection 始终为空,但在客户端,CollectionType 的所有子字段都包含它们的图像。
我们可以假设我错误地配置了 Vich/UploaderBundle,没有在服务器目录中保存图像的权限,数据库模式描述不正确......但是 - 不!一切都是正确的。特别是为此,我创建了一个单独的 ImageController,它在 newAction() 中创建了 ImageType 表单,并且所有图像都安全地存储在数据库中。所以问题出在 ArrayCollection 级别或“一对多,单向与连接表”关系级别的某个地方。我认同。
请帮助,找出这个陷阱。我会很感激。如有必要 - 我可以通过 git 共享项目。
php - 来自供应商的源代码加载并编译为 src 目录中的文件
我正在尝试新的 Symfony4(框架包),我想将我的一些可重用类从 src 目录移动到供应商一(通过 composer PSR-4 加载)。
所以我创建了一个包(新的 git 存储库),在那里添加了类(到 src 目录中),将 PSR-4 配置添加到包的 composer.json 中,如下所示:
我跑了composer require <name_of_my_package>
,我甩掉了自动加载。
一切都很顺利,但是当我想从我的包中访问任何类时——令我惊讶的是——Symfony 无法找到和使用这些类中的任何一个(即使它们在作曲家的自动加载文件中)。
我认为我需要以某种方式将这些类添加到 Symfony 容器构建器中,但我不确定如何。
感谢所有帮助。
php - symfony 4.0 form_errors() 不起作用
我正在使用 Symfony 4.0 框架我有一个问题。我创建了表单,它可以正常工作,但我看不到 form_errors() 文本,它不工作。
我在这段代码中哪里做错了?
我的控制器:
我创建的表单无法获得树枝渲染。看不到错误文本
..html.twig:
symfony - 如何将参数传递给 Symfony4 中的自定义 Doctrine 类型
我开发了一种新的 Doctrine 类型来加密字符串。
在旧的 Symfony3 应用程序中,我通过以下方式注册了新类型:
我如何在新的 Symfony4 应用程序中做同样的事情?我知道我可以在教义.yaml 配置文件中注册一个新类型。但是我需要设置密码参数...如何在新版本中设置对象参数?
非常感谢。
php - Symfony 3/4 中修改表单的解耦方式
我希望能够使用 Symfony Event Dispatcher 更改表单。Symfony 文档讨论了动态表单修改,然而,在所有示例中,事件侦听器或订阅者都是在表单类中创建的。我想让这个逻辑与我的表单类分离。
如何修改 Symfony 表单,而不必指定表单类中将调用哪些事件侦听器?
php - Symfony4 内核事件执行重定向并依赖于用户
我想在每个请求上检查用户实体的某些内容,如果满足某些条件,我想执行重定向。试过这个:
但是 $request->getUser() 返回 null
有什么建议如何让用户参与内核事件?
php - Symfony4:Doctrine2 工作,但在 PHPUnit 测试中没有连接(内核启动)
Symfony4 中的奇怪问题:Doctrine 有效,我可以使用php bin/console doctrine:schema:create
. 但是我的 PHPUnit 测试没有连接。通过运行./bin/phpunit
我得到SQLSTATE[HY000] [2002] No such file or directory
异常。
我按照文档中有关启动内核的步骤进行操作:http: //symfony.com/doc/current/testing/doctrine.html
我的代码:
有谁知道为什么会这样?一个错误?
编辑:
显然该.env
文件未正确读取。我将DATABASE_URL
环境变量移到doctrine.yml
文件中,现在它可以工作了。
symfony4 - Symfony 4:phpunit.xml.dist 中的 ENV
为了在 Symfony 4 中进行功能测试,我必须添加一个<env .../>
标签来phpunit.xml.dist
指定数据库凭据。
我对此感到尴尬的是,这phpunit.xml.dist
当然是致力于 VCS。这意味着数据库凭据,通常是 - 至少如果不使用 Docker - 主机特定的,被提交给 VCS。(另外:环境设置可能包含敏感数据。出于这两个原因,Symfony 文档说不.env
应该提交给 VCS。)
难道没有更明智的方法来处理这个问题吗?我希望 PHPUnit 只使用来自.env
. 这不可能吗?我知道我可以只在 shell 中指定 ENV 变量或从中导出它们.bashrc
,.profile
等等,但要么测试调用更复杂,要么我在项目之外有一堆项目配置。或者我可以自己编写脚本并让 shell 检查其中是否存在.env
文件pwd
并自动为下一个命令设置该文件,但这似乎有点开销……</p>
(顺便说一句:使用 SQLite 不是一种解决方案,因为 SQLite 不适合我们的需求。此外,数据库凭据只是一个示例。可能还需要配置其他设置<env>
。)