小编Aym*_*Dev的帖子

使用带有Doctrine 2的灯具时出现致命错误

我是Symblog 2初学者,我正在学习Symblog2的教程:http://tutorial.symblog.co.uk/docs/doctrine-2-the-blog-model.html .

我创建了我的数据模型,并尝试使用Doctrine 2 fixtures将测试数据填充到我的数据库中.

我下载了必要的软件包并将以下内容添加到我的autoload.php:

AppKernel.php

以下是php app/console doctrine:fixtures:load:

load()

我的fixtures类看起来像这样:

'Doctrine\\Common\\DataFixtures'    => __DIR__.'/../vendor/doctrine-fixtures/lib',
'Doctrine\\Common' => __DIR__.'/../vendor/doctrine-common/lib',
Run Code Online (Sandbox Code Playgroud)

当我尝试运行时FixtureInterface::load,我得到以下异常:

new Symfony\Bundle\DoctrineFixturesBundle\DoctrineFixturesBundle(),
Run Code Online (Sandbox Code Playgroud)

我理解错误信息,但在我看来,我的autoload.php方法是兼容的AppKernel.php.

有人能告诉我,我错过了什么?我一步一步地按照教程.

php symfony doctrine-orm

7
推荐指数
2
解决办法
5270
查看次数

forSeach querySelectorAll在最近的Microsoft浏览器中不起作用

我正在制作一个关于产品(颜色等)的选择的脚本,它适用于除Internet Explorer(11)和Edge之外的所有浏览器.

我将每个参数的选择放在一个数组中,并使用该array.forEach()方法将一个函数应用于它们.

颜色参数的示例:

var color_btns = document.querySelectorAll('#color > p');
color_btns.forEach(function(color) {
    color.onclick = function () {
        color_btns.forEach(function(element) {
            if (element.classList.contains('selected')) {
                element.classList.remove('selected');
            }
        });
        color.classList.add('selected');
        document.querySelector('#f_color').value = color.dataset.id;
    };
});
Run Code Online (Sandbox Code Playgroud)

我在IEEdge的控制台中得到以下输出:

对象不支持属性或方法'forEach'

在搜索了这个问题后,我了解到IE 9及更新版本支持此功能.我试图自己定义功能但没有成功.当我记录该函数时,它被定义为一个函数([native code]内部带有" ").

我用一个替换.forEachfor它,它工作得很好,

  • 但是我怎么能让它发挥作用呢?
  • 是否有forEach()针对Internet ExplorerEdge的特定用法?

我以为它是Array.prototype.forEach最新版本的IE(和所有版本的Edge)都有它......?

javascript arrays foreach internet-explorer microsoft-edge

7
推荐指数
2
解决办法
4726
查看次数

PHPStan:具有泛型类的属性未指定其类型:TKey、T

我在一个Symfony项目上运行PHPStan,其中我在Doctrine实体中有以下关系:

/**
 * @ORM\OneToMany(targetEntity="App\Entity\Course\Slide", mappedBy="chapter", cascade={"persist"}, orphanRemoval=true)
 * @ORM\OrderBy({"listOrder" = "ASC"})
 *
 * @var ArrayCollection<Slide>
 */
private $slides;
Run Code Online (Sandbox Code Playgroud)

使用规则级别 6运行分析我收到以下有关该属性(及其 getter 返回类型)的消息:

App\Entity\Course\Chapter::$slides具有泛型类的属性Doctrine\Common\Collections\ArrayCollection未指定其类型:TKey, T
您可以通过checkGenericClassInNonGenericObjectType: false在您的phpstan.neon.

我的编辑尝试只会混淆 PHPStan,可能是因为我没有完全理解这里的泛型。但是仅仅因为我不明白而将消息静音将是愚蠢的。

我应该在 PHPDoc 中添加或更改什么?

generics doctrine static-analysis phpdoc phpstan

7
推荐指数
2
解决办法
3719
查看次数

为什么 PHP 7 没有捕捉到一些错误?

PHP 7 中,可以抛出的任何对象的基本接口是Throwable。我们还有一个用于所有内部 PHP 错误的Error基类。但是为什么我无法捕捉到以下错误:

一种)

try {
    $file = fopen('not_exist_file', 'r');
} catch (\Error $e) {
    echo 'Cannot open a file';
}
Run Code Online (Sandbox Code Playgroud)

预期结果:'无法打开文件'
实际结果:PHP 警告:fopen(not_exist_file):无法打开流:没有这样的文件或目录

b)

try {
    $result = 10 / 0;
} catch(\DivisionByZeroError $e){
    echo 'Catch DivisionByZeroError';
} catch (\Throwable $e) {
    echo 'Catch Throwable';
}
Run Code Online (Sandbox Code Playgroud)

预期结果:'Catch DivisionByZeroError'
实际结果:PHP 警告:在 ..

C)

try {
    trigger_error('User error');
} catch(\Error $e) {
    echo 'Catch error';
} catch (\Throwable $e) …
Run Code Online (Sandbox Code Playgroud)

php

6
推荐指数
1
解决办法
339
查看次数

如何让 NGINX 在 Docker 中运行以重新加载 nginx.conf 配置

我正在尝试让基于 NGINX 的反向代理在 Windows/WSL2 环境中工作。我对 Docker 和 NGINX 世界非常陌生。我能够让以下命令工作

docker run --name nginx-test -p 8080:80 -v /home/skotekar/nginx.conf:/etc/nginx/nginx.conf:ro -v /mnt/d/site1/wwwroot:/usr/share/nginx/html:ro -d nginx:alpine
Run Code Online (Sandbox Code Playgroud)

然后我可以浏览 http://localhost:8080 并查看我的静态内容。正如您从命令中看到的,我的本地/home文件夹中有一个默认的nginx.conf,运行时该文件夹会映射到 NGINX Docker。第一次效果很好。

现在,如果我使用以下命令停止容器:

docker container stop nginx-test
Run Code Online (Sandbox Code Playgroud)

然后对/home目录中的nginx.conf文件进行更改,并希望使用以下命令启动具有更新配置的容器:

docker container start nginx-test
Run Code Online (Sandbox Code Playgroud)

但是这个命令失败给了我一个非常令人困惑的消息:

来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:370: 启动容器进程导致:process_linux.go:459: 容器初始化导致:rootfs_linux.go:59: 挂载“/run/desktop/mnt/host/wsl/ docker-desktop-bind-mounts/Ubuntu-20.04/c0d0caa87ff063ee46265048f5b1ee489a8945669d39c6f6110cd578b8cda1ed”到 rootfs 位于“/var/lib/docker/overlay2/4e6b279945acb06200b3677272774f 4b5fbb6a619214decbca8c594dbbe3b8ec/merged/etc/nginx/nginx.conf”导致:没有这样的文件或目录:未知

让它重新运行的唯一方法是删除容器并再次使用第一个命令。知道如何让它发挥作用。如果我可以在更改配置后重新启动容器,直到找出所需的正确反向代理设置,那就更容易了。

谢谢

nginx docker windows-subsystem-for-linux nginx-config wsl-2

6
推荐指数
1
解决办法
1万
查看次数

Informix 中的 group_concat

在 Informix 的 SQL 中寻找一个模拟 MySQLgroup_concat功能的查询。

MySQL 的group_concat作用是创建组中所有成员的枚举。

因此数据如下:

订单号 项目名 价格
1 10
1 5
2 15

以及以下查询:

select group_concat(itemName), sum(price)
from order_details
group by orderid
Run Code Online (Sandbox Code Playgroud)

会产生:

项目 价格
纸、笔 15
15

在 Informix 中实现这一目标的最有效方法是什么?我们一定要使用存储过程吗?

sql informix

5
推荐指数
1
解决办法
1万
查看次数

错误:需要重新创建网络“docker_default” - 选项“com.docker.network.windowsshim.networkname”已更改

docker-compose.exe up节目

错误:需要重新创建网络“docker_default” - 选项“com.docker.network.windowsshim.networkname”已更改

昨天在Windows 10 Pro下进行最后一次 Docker 更新后。我怎样才能做到这一点?

  • 码头工人版本:17.06.1-ce
  • 建造:874a737

docker docker-compose

5
推荐指数
0
解决办法
3683
查看次数

PHP 单元 9:测试依赖项对我不起作用

以下PHPUnit代码取自他们自己的网站,它对我不起作用,即使文档说它可以工作。

<?php declare(strict_types=1);

use PHPUnit\Framework\TestCase;

final class MultipleDependenciesTest extends TestCase
{
    public function testProducerFirst(): string
    {
        $this->assertTrue(true);
        return 'first';
    }
    
    public function testProducerSecond(): string
    {
        $this->assertTrue(true);
        return 'second';
    }
    
    /**
     * @depends testProducerFirst
     * @depends testProducerSecond
     */
    public function testConsumer(string $a, string $b): void
    {
        $this->assertSame('first', $a);
        $this->assertSame('second', $b);
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

  1. MultipleDependencyTest::testConsumer ArgumentCountError: 函数 MultipleDependencyTest::testConsumer() 的参数太少,0 已通过,恰好 2 预期`

php phpunit

5
推荐指数
1
解决办法
93
查看次数

从4.2到4.3的Symfony更新导致Web Profiler中断

我跑了composer update,现在收到大量的弃用警告:

> [2019-06-03 18:08:41] request.INFO: Matched route "_wdt".
> {"route":"_wdt","route_parameters":{"_route":"_wdt","_controller":"web_profiler.controller.profiler::toolbarAction","token":"9354bc"},"request_uri":"http://local
> host:8080/_wdt/9354bc","method":"GET"} [] [2019-06-03 18:08:42]
> request.CRITICAL: Uncaught PHP Exception Twig\Error\RuntimeError:
> "Impossible to access an attribute ("nb_errors") on a string variable
> ("O:39:"Symfony\Component\VarDumper\Cloner\Data":6:{s:45:"ymf
> ony\Component\VarDumper\Cloner\Data
Run Code Online (Sandbox Code Playgroud)

网络探查工具栏被打破,出现此错误:

加载Web调试工具栏时发生错误。

但是当我这样做时,我会bin/console --version得到:

Symfony 4.3.0 (env: dev, debug: true)
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?关于什么composer.json文件提供作曲更新的能力4.3,甚至?


这是我当前的composer.json

{
  "type": "project",
  "license": "proprietary",
  "require": {
    "php": "^7.1.3",
    "ext-iconv": "*",
    "doctrine/doctrine-migrations-bundle": "^2.0",
    "easycorp/easyadmin-bundle": "^1.17",
    "iio/libmergepdf": "~3.0", …
Run Code Online (Sandbox Code Playgroud)

upgrade symfony composer-php symfony-4.3

3
推荐指数
1
解决办法
1440
查看次数

在 Symfony 4/5 中安装 orm-fixtures 时 Composer 发生冲突

当我尝试orm-fixtures在 Symfony 5.1 中安装时遇到问题:

$ composer require orm-fixtures --dev
Using version ^3.3 for doctrine/doctrine-fixtures-bundle
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Restricting packages listed in "symfony/symfony" to "5.1.*"
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: don't install doctrine/doctrine-fixtures-bundle 3.3.1
    - Conclusion: remove doctrine/cache 1.10.2
    - Conclusion: don't install doctrine/cache 1.10.2
    - doctrine/common 2.2.1 conflicts with doctrine/cache[1.10.2].
    - doctrine/common 2.2.2 conflicts with …
Run Code Online (Sandbox Code Playgroud)

php symfony doctrine-orm composer-php

3
推荐指数
1
解决办法
2301
查看次数