symfony 相关问题

Symfony既指用于构建Web应用程序的PHP框架,也指构建框架的一组组件。此标记指的是当前支持的主要版本2.x,3.x和4.x.或者,您可以使用相应的标记指定确切的版本。此标记不应用于有关Symfony 1.x的问题。请改用Symfony1标签。

Symfony MySQL 配置问题:尽管凭据正确,连接仍被拒绝

我',正在学习 Symfony,但我在配置 mysql 时遇到问题。我正在使用这个 fork https://github.com/Norivo7/symfony-docker,它也可以与 phpmyadmin 一起正常工作。我有默认数据...

回答 1 投票 0

Symfony Web 服务器需要 index.php 问题

我刚刚使用composer update命令将我的symfony版本从3.4.1更新到3.4.2(一切正常)。 当我尝试启动服务器时,我收到以下消息: 警告:require(index.php):失败...

回答 1 投票 0

Symfony 7 资源加载了错误的上下文路径

我正在使用 Symfony 7.0 开发一个 Web 应用程序。我有一个给定的 UI 模板 (Velzon)。有一个 public/assets 文件夹以及顶部的 asset。 不,我已经用 p 创建了一个简单的控制器...

回答 1 投票 0

在哪里定义安全角色?

我有一个用户和一个组实体,它们都拥有一系列角色。 现在我想保留修改角色、添加角色等选项。 我应该在类中使用常量吗...

回答 1 投票 0

编写此 Symfony2 URL 重定向的更好方法

这可行,但很混乱。我一直在摆弄参数包,但没有什么比我拥有的代码更好用的了。 我只想重定向到同一页面并删除查询字符串,但为了...

回答 1 投票 0

Symfony - 未定义类型'Doctrine\ORM\Mapping\Entity

创建实体后,我在主题中遇到了许多与此类似的错误。不知道为什么使用标签似乎是正确的。使用symfony 6.1。 这是我的模型: 命名空间应用\实体; 使用应用程序\存储库\

回答 2 投票 0

phpstan 意外的项目“参数 › symfony”,但已安装扩展

在一个旧的现有项目中,我想添加 phpstan 与 symfony 和原则扩展。 当我输入composer require --dev phpstan/phpstan phpstan/extension-installer phpstan/phpstan-doctrine phps...

回答 1 投票 0

Symfony 5+ 为多对多关系添加时间戳

我在两个实体之间有关系: 寄养家庭 动物 在 Animal 实体上,我有一个名为“FosterFamiliesHistory”的字段,它与 FosterFamily 实体存在多对多关系

回答 0 投票 0

Laravel 11 无法发送电子邮件

我使用“php artisan make:mail PostMail”创建了一个可邮寄的类。 以下是 PostMail 文件内的示例代码。 /** * 获取消息信封。 */ 公共函数信封():

回答 1 投票 0

为什么我无法使用 SwiftMailer 发送 Gmail 电子邮件?

当我尝试在 Symfony 项目中使用 swiftmailer 发送电子邮件时,出现以下异常: 刷新电子邮件队列时发生异常:无法连接 与主机 smtp.gmail.co 建立...

回答 2 投票 0

API 平台 - 如何使用装饰器在 Swagger UI 中添加响应代码以添加 400、404、500 响应代码,以便客户端提前知道响应

我想使用 swagger UI 为每个路由添加响应代码(400,404, 500),以便用户提前知道这些错误代码的响应是什么。 我正在关注以下链接,但不确定...

回答 2 投票 0

VS Code 扩展,用于在 Symfony 6 项目中自动完成 Twig 文件中的 HTML 标记

我正在寻找一个 VS Code 扩展,它可以帮助我自动完成 twig 文件中的 HTML 标记。 我想写“h1”,然后按回车键并得到: 现在我安装了...

回答 2 投票 0

如何链接到 Twig 模板中的另一个页面?

我的控制器中的这段代码加载我的第一页: /** * @Route("/主") */ 公共函数indexAction() { $template = $this->container->get('template'); $html = $temp...

回答 1 投票 0

SwiftTransport 异常:预期响应代码 220,但得到代码“421”

我正在使用 FOSUserBundle 和 Symfony2 ,几天前注册过程工作正常,然后在注册时突然出现以下错误: 预期响应代码 220,但得到代码“421”,...

回答 2 投票 0

Symfony 序列化器未序列化所有类字段

我有两个类,一个用于管理事件,另一个是用户。用户可以参加活动。当他们参与时,他们就成为“参与者”。 问题是当我序列化

回答 1 投票 0

使用 DefaultQuoteStrategy::getColumnName() 将 Doctrine ORM 从 2.2 升级到 3.0 时出现问题

当我将 Doctrine/orm 从 2.2 升级到 3.0 时,我的 Symfony 6.4 遇到了问题。错误说: Doctrine\ORM\Mapping\DefaultQuoteStrategy::getColumnName():返回值必须是字符串类型,null

回答 1 投票 0

如何使用约束属性对 symfony dto 进行单元测试

我有一个新创建的 Symfony 7 应用程序,并且有一个名为:AuthCallbackDto 的 DTO 我有一个新创建的 Symfony 7 应用程序,并且有一个名为:AuthCallbackDto 的 DTO <?php declare(strict_types=1); namespace App\Application\Model\Auth; use Symfony\Component\Validator\Constraints as Assert; readonly class AuthCallbackDto { public function __construct( #[Assert\NotBlank(message: 'The `code` value cannot be blank')] #[Assert\Length(min: 5)] private string $code, #[Assert\NotBlank(message: 'The `session_state` value cannot be blank')] #[Assert\Length(min: 5)] private string $session_state, ) { } public function getCode(): string { return $this->code; } public function getSessionState(): string { return $this->session_state; } } 我在控制器中使用它,如下所示: <?php declare(strict_types=1); namespace App\Application\Controller\Auth; use App\Application\Model\Auth\AuthCallbackDto; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Attribute\AsController; use Symfony\Component\HttpKernel\Attribute\MapQueryString; use Symfony\Component\Routing\Attribute\Route; #[AsController] class Callback { #[Route('/auth/callback', name: 'auth/callback', methods: ['GET'])] public function test( #[MapQueryString] AuthCallbackDto $authCallbackDto, ): Response { return new JsonResponse([ 'code' => $authCallbackDto->getCode(), 'session_state' => $authCallbackDto->getSessionState() ]); } } 如果代码或 session_state 值不存在或 < 5 characters then an error is thrown. This is good! http://localhost:8000/auth/callback?code=oihiohoih&session_state=34f34f34f - 有效(好) http://localhost:8000/auth/callback?code=&session_state= - 失败(好) 'http://localhost:8000/auth/callback?code=123&session_state=123 - 失败(好) 由于过于自信,我决定为 DTO 类编写一个非常小的单元测试。然而,我随后注意到当我从控制台运行 PHP Unit 时,约束属性没有被应用。测试中的异常永远不会抛出。 任何人都可以告诉我我做错了什么还是我只是假设太多? 这是我的单元测试: <?php declare(strict_types=1); namespace App\Tests\Unit\Application\Model\Auh; use App\Application\Model\Auth\AuthCallbackDto; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; class AuhCallbackDtoTest extends TestCase { /** * @return array<array<int, string|bool>> */ public static function dtoData(): array { return [ [ '', '', true, ], [ 'someCodeABC12344', 'someSessionState', false, ], ]; } #[DataProvider('dtoData')] public function testDtoCanBeCreated(string $code, string $sessionState, bool $exception): void { if ($exception) { $this->expectException(\Exception::class); } $dto = new AuthCallbackDto($code, $sessionState); self::assertEquals($dto->getCode(), $code); self::assertEquals($dto->getSessionState(), $sessionState); } } 我尝试使用控制台调试验证规则,看起来不错: bin/console debug:validator 'App\Application\Model\Auth\AuthCallbackDto' App\Application\Model\Auth\AuthCallbackDto ------------------------------------------ +---------------+--------------------------------------------------+--------------------------+---------------------------------------------------------------------------------+ | Property | Name | Groups | Options | +---------------+--------------------------------------------------+--------------------------+---------------------------------------------------------------------------------+ | code | property options | | [ | | | | | "cascadeStrategy" => | | | | | "None", | | | | | "autoMappingStrategy" => | | | | | "None", | | | | | "traversalStrategy" => | | | | | "None" | | | | | ] | | code | Symfony\Component\Validator\Constraints\NotBlank | Default, AuthCallbackDto | [ | | | | | "allowNull" => | | | | | false, | | | | | "message" => "The `code` | | | | | value cannot be blank", | | | | | "normalizer" => | | | | | null, | | | | | "payload" => | | | | | null | | | | | ] | | code | Symfony\Component\Validator\Constraints\Length | Default, AuthCallbackDto | [ | | | | | "charset" => | | | | | "UTF-8", | | | | | "charsetMessage" => "This | | | | | value does not match the expected {{ charset }} charset.", | | | | | "countUnit" => | | | | | "codepoints", | | | | | "exactMessage" => "This | | | | | value should have exactly {{ limit }} character.|This value should have exactly | | | | | {{ limit }} characters.", | | | | | "max" => | | | | | null, | | | | | "maxMessage" => "This value | | | | | is too long. It should have {{ limit }} character or less.|This value is too | | | | | long. It should have {{ limit }} characters or less.", | | | | | "min" => 5, | | | | | "minMessage" => "This value | | | | | is too short. It should have {{ limit }} character or more.|This value is too | | | | | short. It should have {{ limit }} characters or more.", | | | | | "normalizer" => | | | | | null, | | | | | "payload" => | | | | | null | | | | | ] | | session_state | property options | | [ | | | | | "cascadeStrategy" => | | | | | "None", | | | | | "autoMappingStrategy" => | | | | | "None", | | | | | "traversalStrategy" => | | | | | "None" | | | | | ] | | session_state | Symfony\Component\Validator\Constraints\NotBlank | Default, AuthCallbackDto | [ | | | | | "allowNull" => | | | | | false, | | | | | "message" => "The | | | | | `session_state` value cannot be blank", | | | | | "normalizer" => | | | | | null, | | | | | "payload" => | | | | | null | | | | | ] | | session_state | Symfony\Component\Validator\Constraints\Length | Default, AuthCallbackDto | [ | | | | | "charset" => | | | | | "UTF-8", | | | | | "charsetMessage" => "This | | | | | value does not match the expected {{ charset }} charset.", | | | | | "countUnit" => | | | | | "codepoints", | | | | | "exactMessage" => "This | | | | | value should have exactly {{ limit }} character.|This value should have exactly | | | | | {{ limit }} characters.", | | | | | "max" => | | | | | null, | | | | | "maxMessage" => "This value | | | | | is too long. It should have {{ limit }} character or less.|This value is too | | | | | long. It should have {{ limit }} characters or less.", | | | | | "min" => 5, | | | | | "minMessage" => "This value | | | | | is too short. It should have {{ limit }} character or more.|This value is too | | | | | short. It should have {{ limit }} characters or more.", | | | | | "normalizer" => | | | | | null, | | | | | "payload" => | | | | | null | | | | | ] | +---------------+--------------------------------------------------+--------------------------+---------------------------------------------------------------------------------+ 我可以更新 DTO 的构造函数以进行一些标准的 Webmozart 静态断言调用,但当应用程序按预期运行时,这是不必要的。 ... public function __construct( #[Assert\NotBlank] #[Assert\Length(min: 5)] private string $code, #[Assert\NotBlank] #[Assert\Length(min: 5)] private string $session_state, ) { \Webmozart\Assert\Assert::notEmpty($this->code); \Webmozart\Assert\Assert::minLength($code, 5); \Webmozart\Assert\Assert::notEmpty($this->session_state); \Webmozart\Assert\Assert::minLength($this->session_state, 5); } ... 那些 Assert 属性来自 Symfony Validator 组件。 PHP 不会自动在其上运行业务逻辑。但它确实在框架中做到了这一点。 您需要将其传递给 symfony 验证器。 但是,由于您正在测试控制器,因此您可以创建一个 WebTestCase 来代替。您可以通过发送请求并验证响应来(功能上)测试您的控制器。简而言之,就像您的应用程序是一个“黑匣子”一样运行功能测试。 有关更多信息,请参阅本章:https://symfony.com/doc/current/testing.html#write-your-first-application-test 如果你真的不想要这个,并且你真的想测试你的 Dto。您必须使用 Symfony 验证器验证您的 Dto。 class AuhCallbackDtoTest extends TestCase { public function testInvalidDto(): void { $validator = Validation::createValidator(); $dto = new AuthCallbackDto("", ""); $errors = $validator->validate($dto); $this->assertCount(2, (array)$errors); // there are 2 errors // You can check specifically for the error and the error message too } } 仅供参考,我还没有真正测试过这一点。因此 Validation::createValidator() 可能需要一些额外的配置来理解这些构造函数属性,但我并不完全确定。

回答 1 投票 0

如何在 KNPMenuBundle 中将“当前”类别更改为“活动”

我想知道,将“当前”类更改为“活动”以便 Bootstrap 能够正确使用它的最佳方法是什么? 我想过复制并覆盖 knp_menu_html.twig 但我...

回答 2 投票 0

twig 函数 encore_entry_link_tags('app') 和 encore_entry_script_tags('app') 都会导致内部服务器错误

我正在本地建立一个新的 Pimcore 网站,但我似乎无法使提到的 twig 功能正常工作。我收到此错误消息 当我注释掉 encore_entry_link_tags('app') 时,

回答 1 投票 0

教义迁移表整理

尝试找到一种方法来以编程方式创建具有特定排序规则的表,但似乎找不到正确执行此操作的方法。我正在使用“doctrine/doctrine-migrations-bundle”:“2.1.*@dev”...

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.