小编Ste*_*nte的帖子

导入注释时遇到问题

我正在开发一个CodeIgniter项目,我正在使用Doctrine2和Symfony2 Validator组件.

我的所有Doctrine2实体use Doctrine\ORM\Mapping和实体管理器都会识别它们.我的实体注释看起来像这样:

/**
 * @Entity(repositoryClass = "UserRepository")
 * @Table(name = "user")
 * @HasLifecycleCallbacks()
 */
Run Code Online (Sandbox Code Playgroud)

此时,我能够毫无困难地坚持实体.当我尝试使用Symfony2 Validator组件时出现第一个问题.当我尝试验证User对象时,我收到此错误:

[语义错误]从未导入类Entity\User中的注释"@Entity".您是否忘记为此注释添加"使用"语句?

这个问题的唯一"修复"是通过use Doctrine\Mapping\Entity,但我必须为我的实体(Table,Column,ManyToOne等)使用的每个注释执行此操作.我试图找出为什么我需要明确地use每个注释类而不是它们被自动识别(不应该use Doctrine\ORM\Mapping授予我访问该命名空间中的所有类的权限?).

所以,然后我试着use Doctrine\ORM\Mapping as ORM用我的所有注释作为前缀ORM\.例如:@ORM\Entity().Symfony2验证器停止抱怨,但现在Doctrine2抱怨Class Entity\User is not a valid entity or mapped super class.我不知道为什么这个方法适用于Validator,而不是Doctrine2.如果我运行控制台命令doctrine:orm:info,User则无法识别我的实体.

因为这是一个CodeIgniter应用程序,我正在自动加载Symfony2和Doctrine2库.我的自动加载代码如下:

# Symfony2 ClassLoader component
require_once __DIR__ . '/application/libraries/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php';
$loader = new \Symfony\Component\ClassLoader\UniversalClassLoader();
$loader->register();
$loader->registerNamespace('Symfony', __DIR__ . '/application/libraries/symfony/src');
$loader->registerNamespace('Doctrine', __DIR__ …
Run Code Online (Sandbox Code Playgroud)

php doctrine-orm

8
推荐指数
3
解决办法
3万
查看次数

您对强大,可扩展的开发平台建议了哪些框架?

首先,让我为又一个框架问题道歉.但我认为这与通常的"我应该选择哪种框架?"不同.保证.

这是我的情况:在过去的一年里,我一直在使用自定义框架.它已被用于从小型CMS到大型网站甚至中型社交网络的所有内容.它工作得很好但我现在看到它的局限性.所以,我决定改用第三方框架.更简单的框架(CI,Kohana,Cake)似乎与我所听到的一样缺乏灵活性 - 所以这导致我走向ZF.但是,我也听说ZF可能过于灵活,因而难以使用.更复杂的是,我正在寻找一种通用的解决方案; 我需要一个适用于大型项目的设置.我是主要开发人员,但我需要我的合作伙伴最终能够学习系统并帮助完成不那么复杂的编程任务.

我研究过Doctrine,我喜欢它.因此,我倾向于将Symfony(与Doctrine)作为ZF的主要框架来填补空白.另外,我需要能够将自己的作品添加到此平台,与任何第三方库并行.我希望这将为我提供一个可靠,可扩展的平台,因为我们实际上无法承担每隔几个项目切换框架的费用.

我正在寻找与我现在情况相同的其他人的建议.任何建议将不胜感激.

编辑:我已经在下面发布了我的解决方案,希望能帮助处于同样情况的其他人

php frameworks symfony1 zend-framework

7
推荐指数
1
解决办法
1635
查看次数

Symfony - 是否可以禁用每个模块(或每个模板)的输出转义?

我正在尝试在XML模板中输出一些HTML,Symfony的转义方法正在弄乱它.所以我尝试在模块的配置文件夹中制作settings.yml的副本,但它似乎完全被忽略了.有没有一种简单的方法来更改每个模块甚至每个模板的escaping_strategy和/或escaping_method设置?

php symfony1 symfony-1.4

7
推荐指数
3
解决办法
9862
查看次数

是否可以以编程方式查看防火墙后面的URL /路由是否受到保护?

我有一种情况,如果用户尝试访问受保护的URL并且未经过身份验证/授权,我需要运行一些代码.

默认情况下,Symfony通过将用户重定向或转发到登录表单来处理未经身份验证的用户.如果请求方法是POST,我想阻止这种情况发生,而是回显JSON对象.

我能想到的最好的方法是创建一个自定义侦听器来侦听kernel.request事件并检查两件事:

  • 检查请求方法是否为POST
  • 检查用户是否完全通过身份验证

如果它是POST请求,并且用户未完全通过身份验证,我将回显JSON对象.

但我的听众(预期)会针对所有请求进行解雇 - 我想将其限制为仅检查请求是否针对受防火墙保护的URL.有可能以编程方式检查这个吗?

我也有一种唠叨的怀疑,有一种更简单的方法可以解决这个问题,但无法弄明白,所以如果有人有任何提示,我很乐意听到他们:)

编辑
@Problematic - 仅检查防火墙请求的原因是因为我有一些没有防火墙的请求,如果我的代码被触发,我将收到上述JSON对象而不是请求的真实响应.

现在,如果我没有登录并发出POST请求api/get/something(位于防火墙后面),Symfony将返回描述登录页面的HTML.相反,我想回应一些类似的东西{error: 'User is not authorized'}.但我只希望这发生在POST请求中.

firewall symfony

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

如何获取Symfony2 Controller中的Resources/Config文件夹路径?

如何在Symfony 2中的控制器上下文中将Resources/config文件夹的路径作为字符串获取?

我试过看容器,但我没有发现任何东西.

php symfony

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

如何在POST请求期间刷新会话?

我正在Symfony2中构建一个用户登录的Ajax应用程序,然后从那时起,所有内容都由POST请求处理.在将会话生存期定义为5分钟后config.yml,即使他们正在发出POST请求,我也会遇到5分钟后用户会话失效的问题.每次发出请求时,我都希望在会话无效之前重置倒计时,但我不确定如何有效地执行此操作.

我目前正在考虑的方法是为kernel.request事件编写一个监听器,检查请求方法是否为POST,并操纵会话类.我还没有这样做,但它似乎不是一个干净的解决方案,因为每次发出请求时,监听器都需要触发.

这是我的会话配置:

session:  
    default_locale: %locale%  
    auto_start:     true  
    lifetime:       300  
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?解决方案是PHP而不是Symfony吗?

php session symfony

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

使用Django发出HTTP请求并反序列化输出

所以我对整个Web开发几乎全新,但是已经被投入到使用Django从Web服务中提取和解析数据的侧面项目中,并且正在努力理解事情是如何工作的,即使在查看Django时也是如此.文档.

在Django中,我已经完成了所有设置并在基本级别工作(使用模板,显示的页面显示"Hello World").

现在,为了从webservice中提取数据,我需要向以下格式的URL发出请求:

http://wbsapi.withings.net/[service_name]?action=[action_name]&[parameters]
Run Code Online (Sandbox Code Playgroud)

在提供的PHP示例中,他们使用cURL,然后使用json_decode执行此操作.

我如何才能从Django中获得类似的功能?提前致谢!

django http request

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

一旦所有嵌套的promises都已解决,就使用Fire Promise.all()

我正在尝试使用他们的Firebase API以递归方式获取Hacker News故事的所有评论.故事有一个kids属性,它是一组代表注释的ID.每个注释都可以有自己的kids属性,指向其子注释,依此类推.我想创建一个整个注释树的数组,看起来像这样:

[{
  'title': 'comment 1', 
  'replies': [{
    'title': 'comment 1.1'
  }, {
    'title': 'comment 1.2'
    'replies': [{
      'title': 'comment 1.2.1'
    }]
  }]
}]
Run Code Online (Sandbox Code Playgroud)

我以为我可以使用以下功能执行此操作:

function getItem(id) {
    return api
        .child(`item/${id}`)
        .once('value')
        .then((snapshot) => {  // this is a Firebase Promise
            let val = snapshot.val()

            if (val.kids) {
                val.replies = val.kids.map((id) => getItem(id))
            }

            return val
        })
}
Run Code Online (Sandbox Code Playgroud)

然后在使用以下内容获取整个评论树后收到通知:

getItem(storyId)
    .then(story => {
      // The story and all of its comments should now be loaded …
Run Code Online (Sandbox Code Playgroud)

javascript recursion asynchronous promise

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

Django无法在Docker设置中连接到Postgres

我在Docker中设置了一个使用Django和Postgres的应用程序.我无法从应用程序连接到Postgres.我跑的时候:

  • docker-compose run web python manage.py runserver
  • docker-compose run web python manage.py migrate

我收到以下错误:

django.db.utils.OperationalError: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)

这是我的Dockerfile:

FROM python:2.7

ADD requirements.txt /app/requirements.txt

WORKDIR /app/

RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

我的docker-compose.yml:

version: '2'
services:
  db:
    image: postgres:9.4
    hostname: db
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=postgres
    ports:
      - "5432:5432"

  web:
    build:
      context: .
      dockerfile: Dockerfile
    hostname: web
    volumes:
      - …
Run Code Online (Sandbox Code Playgroud)

python django postgresql docker

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

使用Symfony2在早期阶段开发时关闭防火墙?

本教程之后,我正在使用symfony身份验证/授权体系结构开发Web应用程序.

在设计完整个结构(路线,页面和安全级别)后,我陷入困境:如何在不输入凭据的情况下开发我的页面?有没有办法禁用或关闭整个防火墙功能?我应该使用数据夹具吗?

authentication authorization symfony

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