小编ivo*_*oba的帖子

Symfony Ajax Response显示缓存标头

在我的ajax响应中,Cache-Control Header显示在标记中.

HTTP/1.0 200 OK缓存控制:无缓存日期:2012年10月11日星期四09:00:59 GMT

我希望标题位于标题中而不是标记中.

这是我的控制器动作摘录:

...
$template = $this->render('list.html.twig', array(
                'data' => $data
                    ));
return new Response($template);
...
Run Code Online (Sandbox Code Playgroud)

为什么这样,我怎么能让它消失?

symfony

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

在docker-compose设置中调用redis-cli

我在设置中运行官方Redis图像https://hub.docker.com/_/redis/docker-compose.

myredis:
  image: redis
Run Code Online (Sandbox Code Playgroud)

如何redis-cli在该图像上使用docker-compose 运行?
我尝试了以下,但它没有连接:

docker-compose run myredis redis-cli
> Could not connect to Redis at 127.0.0.1:6379: Connection refuse
Run Code Online (Sandbox Code Playgroud)

图像的文档说我应该运行:

docker run -it --rm \
--link some-redis:redis \
redis \
sh -c 'exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"'
Run Code Online (Sandbox Code Playgroud)

这如何转化为docker-compose run

docker docker-compose

22
推荐指数
2
解决办法
2万
查看次数

在控制器中使用Twig Extension

我在Twig扩展中有一个slugify方法,我想在某些情况下在控制器中使用,fe有重定向.
有一个简单的方法吗?
我如何从控制器中的Twig Extensions访问功能?

或者我是否必须将slugify方法作为帮助才能在代码和树枝中使用它?

slug symfony twig

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

PHPStan 和 Doctrine:$id 永远不会被写入,只能读取

我将 PHP8、symfony5 和doctrine2 与 phpstan 一起使用并收到以下错误:

Property App\Entity\User::$id is never written, only read.  
Run Code Online (Sandbox Code Playgroud)

代码:

<?php

namespace App\Entity;

use App\Repository\UserRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @ORM\Table(name="`user`")
 * @ORM\Entity(repositoryClass=UserRepository::class)
 * @UniqueEntity(fields={"email"}, message="There is already an account with this email")
 */
class User implements UserInterface, PasswordAuthenticatedUserInterface
{
    public const ROLE_USER = 'ROLE_USER';
    public const ROLE_ADMIN = 'ROLE_ADMIN';

    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=180, unique=true) …
Run Code Online (Sandbox Code Playgroud)

php doctrine phpstan

9
推荐指数
2
解决办法
8425
查看次数

权限被拒绝,mkdir在openshift的容器中

我有一个容器,其中nodejs和pm2作为启动命令,在OpenShift上我在启动时遇到此错误:

错误:EACCES:权限被拒绝,mkdir'/.pm2'

我在马拉松主机上尝试过相同的图像,效果很好.

我是否需要使用UserIds更改内容?

Dockerfile:

FROM node:7.4-alpine

RUN npm install --global yarn pm2

RUN mkdir /src

COPY . /src

WORKDIR /src

RUN yarn install --production

EXPOSE 8100

CMD ["pm2-docker", "start", "--auto-exit", "--env", "production", "process.yml"]
Run Code Online (Sandbox Code Playgroud)

更新
节点映像已创建具有UID 1000的新用户"节点",以便不以root身份运行映像.
我还尝试修复权限并将用户"node"添加到根组.
进一步我告诉pm2它应该与ENV var一起使用哪个目录:

PM2_HOME = /家庭/节点/应用/ .pm2

但我仍然得到错误:

Error: EACCES: permission denied, mkdir '/home/node/app/.pm2'
Run Code Online (Sandbox Code Playgroud)

更新了Dockerfile:

FROM node:7.4-alpine

RUN npm install --global yarn pm2

RUN adduser node root
COPY . /home/node/app
WORKDIR /home/node/app
RUN chmod -R 755 /home/node/app
RUN chown -R node:node /home/node/app

RUN …
Run Code Online (Sandbox Code Playgroud)

node.js openshift docker pm2

6
推荐指数
2
解决办法
7985
查看次数

使用composer制作自定义创建项目

我想克隆symfony-standard-edition创建项目调用,但有一些自定义要求.
所以我不需要Swiftmailer或Doctrine ORM但是想拥有PaginatorBundle.

我试图从标准版复制和编辑composer.json并做了一个:

composer.phar install
Run Code Online (Sandbox Code Playgroud)

但这只是安装了供应商目录,而不是像app文件夹等那样安装.

那我该怎么办:

composer.phar create-project symfony/framework-standard-edition myproject
Run Code Online (Sandbox Code Playgroud)

用我编辑过的composer.json?

composer-php

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

在Symfony2中覆盖单个路由

如何在Symfony2中覆盖单个路由?

我有一个附带bundle_routing.yml文件的包.
在扩展此父包的包中,我也有路由文件: 请注意,文件名称不同. routing.xml

在此路由文件中,我喜欢覆盖单个父路由.
我试着简单地重新声明它并改变模式.
但它没有应用.

父:

MyParentBundle_detailpage:
    pattern:  /detail
    defaults: { _controller: "MyParentBundle:Item:detail" }
Run Code Online (Sandbox Code Playgroud)

儿童:

<route id="MyParentBundle_detailpage" pattern="/itemDetails">
        <default key="_controller">MyParentBundle:Item:detail</default>
</route>
Run Code Online (Sandbox Code Playgroud)

routes symfony

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

symfony docker缓存文件的权限问题

我有一个带有docker-compose的docker的symfony设置,除非我运行缓存时运行良好:从控制台清除,webserver无法访问文件.

我可以通过取消注释umask(0000)来规避权限问题; 在控制台和web/app_dev.php但我想按照建议运行symfony.

我做的是旋转容器docker-compose up
然后我进入容器.容器包含apache,php和通过数据卷的代码.

docker exec -i -t apache_1 /bin/bash
Run Code Online (Sandbox Code Playgroud)

显然我以root身份登录然后运行时

app/console cache:clear
Run Code Online (Sandbox Code Playgroud)

缓存中的所有文件都属于root用户.www-data as webserver用户现在无法再访问文件了.

我也可以通过以www-data登录然后缓存生成的文件来避免这种情况:clear属于www-data,webserver可以访问它们.

docker exec -u www-data -i -t apache_1 /bin/bash
Run Code Online (Sandbox Code Playgroud)

但这有一个缺点,我不会在bash,但在/ usr/sbin/nologin,并没有像bash_history等东西.

搜索我发现这是解决许可问题的Dockerfile的一部分,但它对我没有影响.

RUN usermod -u 1000 www-data
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,这将用户1000切换到www-data,但是当我登录到容器时我是根,这不起作用,我假设.

所以当我登录容器时为什么我会root,这个usermod如何工作呢?

docker-compose.yml:

proxy:
  image: jwilder/nginx-proxy:latest
  volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro
  ports:
    - "80:80"
elastic:
  build: docker/elasticsearch
  ports:
    - "9200:9200"
  volumes:
    - data/elasticsearch:/usr/local/elasticsearch/data
apache:
  build: docker/apachephp
  environment:
    - VIRTUAL_HOST=myapp.dev
  volumes:
    - …
Run Code Online (Sandbox Code Playgroud)

symfony docker docker-compose

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

模拟来自本地XML的SoapClient响应

我想模拟来自文件的XML的\ SoapClient的响应。

正如SoapClient从文件返回一样,我如何创建stdClass对象。

客户端已经包装了SoapClient,因此可以轻松模拟响应。

我的模拟是这样的:

$soapClient->expects($this->once())
            ->method('call')
            ->will(
                $this->returnValue(
                    simplexml_load_string(
                        file_get_contents(__DIR__ . '/../../../Resources/file.xml')
                    )
                )
            );
Run Code Online (Sandbox Code Playgroud)

但这将返回SimpleXml而不是stdClass。

更新:
建议的json_encode / json_decode hack似乎无法处理属性,因为SoapClient返回它们:

SoapClient:

object(stdClass)[4571]
  public 'Lang' => string 'de' (length=2)
  public 'Success' => boolean true
Run Code Online (Sandbox Code Playgroud)

哈克:

  object(stdClass)#27 (3) {
  ["@attributes"]=>
  object(stdClass)#30 (2) {
    ["Lang"]=>
    string(2) "de"
    ["Success"]=>
    string(4) "true"
Run Code Online (Sandbox Code Playgroud)

php phpunit soap mocking

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

将函数数组传递给异步并行

我必须将一组函数传递给node.js 的async.js模块.
从文档的正常方式是:

async.parallel([
    function(callback){
        setTimeout(function(){
            callback(null, 'one');
        }, 200);
    },
    function(callback){
        setTimeout(function(){
            callback(null, 'two');
        }, 100);
    },
],
// optional callback
function(err, results){
});
Run Code Online (Sandbox Code Playgroud)

我这样试过:

            for(var i = 0; i < jsonData.length; i++)
            {
                ...
                o.url = serviceurl;
                o.title = jsonData[i];
                var ff = function(callback){
                    obj.loadService(o.title,o.url,callback);
                }
               callItems.push(ff(function(){return true;}));
            }

            async.parallel(
            callItems,
                // optional callback
                function(err, results){
                    console.log('all calls called without any errors');
                });
Run Code Online (Sandbox Code Playgroud)

贯穿但主要的回调没有被调用.
所以我不能说所有并行呼叫都已完成.

我在这里失踪了什么?

javascript asynchronous node.js

4
推荐指数
1
解决办法
4896
查看次数