Symfony既指用于构建Web应用程序的PHP框架,也指构建框架的一组组件。此标记指的是当前支持的主要版本2.x,3.x和4.x.或者,您可以使用相应的标记指定确切的版本。此标记不应用于有关Symfony 1.x的问题。请改用Symfony1标签。
我正在使用 Symfony Process 在命令行 PHP 脚本中运行与 Windows 捆绑在一起的 SSH 客户端。远程服务器设置存储在 C:\Users\MYUSERNAMEHERE\.ss 中
如何配置 Symfony Validator 来忽略 @OA 注释?
我将 OpenAPI OA 注释与 Swagger 和 Symfony Validator 注释一起使用,但两者之间似乎存在冲突。 示例片段: 使用 Symfony\Component\Validator\Constraints 作为
外部脚本未通过 symfony ux 加载到 symfony 7 中
我目前正在使用 symfony 和许多 symfony ux 包,并且我的外部脚本(例如 font Awesome 或 google fonts)未加载,我收到此错误消息:Content-Security-Policy ...
我在 Symfony 中使用 twig 缓存标签。 如文档中所述,我使用 UpdatedAt 实体属性并设置缓存标记,如下所示: {% "post-" ~ post.id ~ "-" ~ post.
Symfony 7.1 命令 php bin/console 学说:映射:导入
我正在使用 symfony 7.1,我想从现有表生成实体,但它似乎不起作用。首先我运行这个命令 php bin/console 学说:mapping:import "App\Entity"
我对我的 symfony 应用程序进行了一些更新: PHP 7.4 至 8.3 交响乐 5.4 至 6.4 API 平台 2.x 至 3 在此过程中,我删除了我正在使用的 FOSUserBundle。最后对 mysql 数据库进行了一些更新......
具有可标记行为的 Symfony 7 EntityType 表单字段
环境: 交响乐7.1 教义2.9 Webpack encore 安装并运行 编写 JS 代码时首选 jQuery 问题: 我想做的是拥有一个 EntityType 的表单字段(所以它
我正在尝试基于 LDAP 和 JWT 设置安全性。一切似乎都运行良好,除了我必须重写 LexikBundle 的成功处理程序以使用我正在使用的自定义 JWT 提供程序
使用 EasyAdmin 创建一个 ChoiceField ,链接到 Doctrine 实体上的 OneToMany 属性
我正在开发一个使用 Symfony 7.1 和 EasyAdmin 4.10 构建的应用程序,具有 3 个实体:任务、技能类别和技能 使命和技能之间的关系是ManyToMany 我只是想成为
CodeIgniter 模型与 Symfony/Doctrine 模型
背景: 我使用 CodeIgniter 构建了我的 Web 应用程序,因为它是我可以轻松掌握并快速上手的唯一框架。现在看到令人难以置信的先进功能......
我遵循了 knpUniversity 的教程“如何在 symfony2 中处理动态子域”。路由子域有效,但是当我尝试访问 www.domain.com 时,我收到了我遇到的错误...
我在我的应用程序中使用 Laravel 和 Vue.js,并且在尝试创建 Stripe Checkout 会话时遇到问题。具体来说,当用户尝试下订单时,我会得到以下信息...
我有两个名为“处理器”的服务: 我有两个名为“处理器”的服务: <?php namespace App\Processor; use App\Repository\ChannelRepository; use Psr\Log\LoggerInterface; class FirstProcessor { public function __construct( LoggerInterface $logger, ChannelRepository $channelRepository, ) { } } <?php namespace App\Processor; use App\Repository\ChannelRepository; use Psr\Log\LoggerInterface; class SecondProcessor { public function __construct( //LoggerInterface $logger, ChannelRepository $channelRepository, ) { } } 我还有一个操作,它是一个公共非共享服务,它使用这些处理器: <?php namespace App\Action; use App\Processor; class CheckEmail { public function __construct( \App\Processor\FirstProcessor $firstProcessor, \App\Processor\SecondProcessor $secondProcessor, ) { } } 以及依赖于 CheckEmail 操作的控制台命令: <?php #[AsCommand('app:check-inbox', 'Check inbox and process emails')] class CheckInboxCommand extends Command { protected CheckEmail $action; public function __construct( CheckEmail $command ) { parent::__construct(); } } 不知何故,我开始收到错误“您请求了一个不存在的服务“App\Repository\ChannelRepository””。当然,ChannelRepository(Doctrine 存储库)存在,并且 Symfony DI 已经看到它两年了,但是发生了一些事情,现在 DI 找不到它。一开始,代码是一个包含大量控制器和服务的大项目。为了找到问题所在,我删除了除导致问题的几个类之外的所有内容。完整的简化代码可在 github 上找到(composer install、symfony serve 并打开 https://127.0.0.1:8000 应该足以重现该问题;需要 php81)。 我发现了一些模式: 如果 App\Action\CheckEmail 被共享(在 services.yaml 中注释为“shared: false”),错误就会消失。 如果我在 $logger constructor 中评论 FirstProcessor,错误就会消失。 如果我在另一个服务的构造函数中使用CheckEmail(并将其保留在CheckInboxCommand的构造函数中),错误就会消失。 例如,取消注释 $action 中的 DevController 即可解决问题。 如果我从 CheckEmail 构造函数中删除 CheckInboxCommand 并将其添加到 DevController 构造函数中,错误就会消失。 对于非共享服务,肯定有一些我不知道的事情,但我无法弄清楚到底是什么。 该服务是自动连接的。您的项目中无需使用此代码。 我确实检查了你的 github 代码并通过简单地删除此表单服务使其正常工作。 App\Action\CheckEmail: public: true shared: false 您的示例中无需设置此配置 我也改变了doctrine.yaml mappings: App: is_bundle: false dir: '%kernel.project_dir%/src' prefix: 'App\' alias: App 另外,在测试此配置之前,不要忘记运行 bin/console cache:clear 命令。
如何使用 SSO 对 Symfony 中的用户进行身份验证?
我有一个问题。我需要通过我的应用程序中的 SSO 响应对用户进行身份验证。 我有一个有效的 SSO 响应,我在身份验证器中传递了 onAuthenticationSuccess,但当我尝试时在我的控制器中传递...
使用 AJAX 和 PreSubmit 事件处理动态下拉菜单
我正在开发一个 Symfony 项目,我需要根据用户选择动态填充两个下拉列表。该过程涉及选择一个“品牌”,然后更新“型号和q...
Shopware 6 - StorefrontExtension - registerThemeServiceAliases - $theme 为空 - v6.5.8.13
在我通过部署器 7.0 切换部署后,控制台中出现了一个新错误: cd /html/shop_deployer/releases/26/ PHP bin/控制台 输出: 警告:...中未定义的数组键“主题”
具有 CloudEvents 和多个队列的 Symfony Messenger
我正在使用 Symfony Messenger 组件在我的应用程序中实现 CloudEvents。 我有两个队列,两个队列都应该处理 CloudEvents。 这是我当前的配置: 路由: '
在此代码中: 在此代码中: <?php namespace App\Tests; use ApiPlatform\Symfony\Bundle\Test\ApiTestCase; use Symfony\Component\HttpClient\HttpClient; use Symfony\Contracts\HttpClient\ResponseInterface; class SuperApiTestCase extends ApiTestCase { public static function getBaseUrl(): ?string { return "https://localhost:8000"; } public static function getShortSessionKey(): ?string { return "JWT_KEY"; } public function sendRequest(string $url, string $methodType = 'GET'): ?ResponseInterface { $url = $this->getBaseUrl() . $url; $client = HttpClient::create(); $response = $client->request($methodType, $url, [ 'headers' => [ 'Authorization' => 'Bearer ' . $this->getShortSessionKey(), 'Accept' => 'application/json', ], 'verify_peer' => false, // Disable SSL verification 'verify_host' => false, // Disable host verification ]); return $response; } public function getCSRF(): ?string { $url = "/api/v1/config/csrf"; $response = $this->sendRequest($url); $csrfData = $response->toArray(); return $csrfData['csrf_token']; } } <?php namespace App\Tests\Controller; use App\Tests\SuperApiTestCase; use Symfony\Component\HttpClient\HttpClient; use Symfony\Component\HttpClient\Exception\ClientException; class UserControllerTest extends SuperApiTestCase { public function testGetUsers() { $client = HttpClient::create([ 'verify_peer' => false, 'verify_host' => false, ]); $csrfToken = $this->getCSRF(); try { $response = $client->request('GET', 'https://localhost:8000/api/v1/user/', [ 'headers' => [ 'Authorization' => 'Bearer ' . $this->getShortSessionKey(), 'Content-Type' => 'application/json', 'X-CSRF-TOKEN' => $csrfToken, ], ]); print_r($response->getStatusCode()); $statusCode = $response->getStatusCode(); $content = $response->getContent(); $data = $response->toArray(); echo "Status Code: $statusCode\n"; print_r($data); } catch (ClientException $e) { echo 'HTTP status code: ' . $e->getResponse()->getStatusCode() . PHP_EOL; echo 'Error: ' . $e->getMessage() . PHP_EOL; echo 'Response: ' . $e->getResponse()->getContent(false) . PHP_EOL; } } } 用于检查 csrf token 的监听器: <?php namespace App\EventListener; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException; use Symfony\Component\Security\Csrf\CsrfToken; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; class CsrfTokenRequestListener { public function __construct(private CsrfTokenManagerInterface $csrfTokenManager) { } public function onKernelRequest(RequestEvent $event) { $request = $event->getRequest(); $path = $request->getPathInfo(); // Only apply to routes starting with /api/v1 but not /api/v1/config/csrf if(preg_match('/^\/api\/v1(?!\/config\/csrf)/', $path)) { $csrfToken = $request->headers->get('X-CSRF-TOKEN'); if (!$csrfToken) { $event->setResponse(new JsonResponse(['error' => 'CSRF token is missing'], JsonResponse::HTTP_BAD_REQUEST)); return; } try { $isValid = $this->csrfTokenManager->isTokenValid(new CsrfToken('csrf_token_id', $csrfToken)); } catch (InvalidCsrfTokenException $e) { $event->setResponse(new JsonResponse(['error' => 'Invalid CSRF token 1'], JsonResponse::HTTP_BAD_REQUEST)); return; } if (!$isValid) { $event->setResponse(new JsonResponse(['error' => 'Invalid CSRF token 2'], JsonResponse::HTTP_BAD_REQUEST)); return; } } } } 在 services.yaml 中注册: App\EventListener\CsrfTokenRequestListener: tags: - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 5 } 当我发送请求以获取用户数据时,它显示此错误,而它与 Postman 一起正常工作: 'error' => 'Invalid CSRF token 2' 问题在于:您发送了 2 个具有不同会话 ID 的请求,这导致了此问题。要解决此问题,您需要在标题中添加 PHPSESSID 及其值,如下所示: $session_id = session_create_id() $response = $client->request('GET', 'https://localhost:8000/api/v1/user/', [ 'headers' => [ 'Authorization' => 'Bearer ' . $this->getShortSessionKey(), 'Content-Type' => 'application/json', 'X-CSRF-TOKEN' => $csrfToken, 'Cookie' => 'PHPSESSID=' . $session_id ], ]);
我尝试本指南在我的实体中使用枚举。我可以将数据保存到数据库中。但是这一行有错误 'booking_fees' => $bookingFeeRepository->findAll(), 错误显示类的对象...
我正在创建一个命令并想要获取所有选项,所以我在代码中使用了 getOptions() ,但它总是返回一个空数组。 经过一些调试,我发现这个 getOptions ...