小编gre*_*emo的帖子

Symfony2错误的区域设置检测?

在关于翻译的 Symfony2指南之后,我发现从http标头(存储在$this->get('session')->getLocale())中的推断区域设置是错误的(发送,推断en):

主机localhost用户代理Mozilla/5.0(Windows NT 6.1; WOW64; rv:7.0.1)Gecko/20100101 Firefox/7.0.1接受text/html,application/xhtml + xml,application/xml; q = 0.9,/ ; q = 0.8 Accept-Language it-it,it; q = 0.8,en-us; q = 0.5,en; q = 0.3

这是正常行为吗?或者我应该设置一些东西,以使本地化开箱即用?

translation localization symfony

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

Symfony app/console cache:clear --env = prod和cache(APC,Memcached等)?

我正在使用Memcached服务器(以及memcache PHP扩展)来缓存验证器元数据和Doctrine metatada/result/query缓存驱动程序.

一切都按预期工作,与文件系统缓存相比速度很快.

我的问题是,命令是否:

php app/console cache:clear --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)

自动清除所有类型的缓存(包括memcache)?

运行此命令并检查服务器统计信息后,项目计数始终与缓存占用相同:

在此输入图像描述

我的配置,其中%prod_cache%参数实际上是字符串memcache:

# Framework Configuration
framework:
    validation:
        cache: %prod_cache% # Matches validator cache service

# Doctrine Configuration
doctrine:
    orm:
        metadata_cache_driver:
            type: service
            id: cache_%prod_cache%
        result_cache_driver:
            type: service
            id: cache_%prod_cache%
        query_cache_driver:
            type: service
            id: cache_%prod_cache%

# DoctrineCacheBundle Configuration
doctrine_cache:
    providers:
        memcache:
            type: memcache
            alias: cache_memcache

# Services
services:
    validator.mapping.cache.memcache: # Validator cache service
        class: Symfony\Component\Validator\Mapping\Cache\DoctrineCache
        arguments: [@cache_memcache]
Run Code Online (Sandbox Code Playgroud)

symfony doctrine-orm symfony-2.3

11
推荐指数
2
解决办法
9210
查看次数

通常使用backbone.js或javascript共享Symfony2验证规则?

是否可以公开Symfony2验证规则(对于给定的实体)?我找不到这样的东西.我正在尝试使用DRY方法进行客户端验证(使用backbone.js).像捆绑或任何提示的东西会有所帮助.

这是组件验证器.一种可能性是:

使用Symfony2标准方法定义服务器端验证规则.示例(YAML,取自他们的网站):

# src/Acme/BlogBundle/Resources/config/validation.yml
Acme\BlogBundle\Entity\Author:
    properties:
        name:
            - NotBlank: ~
Run Code Online (Sandbox Code Playgroud)

/author/rules返回一个JSON对象从实体域映射到一个"编译"正则表达式.我不太确定这一点,但我认为内部Symfony2将validation.yml规则编译成正则表达式.

假设一个作者实体由name字段构成NotBlank(注意我不是正则表达式中的主人,这是另一个问题的复制和粘贴):

{ 'name' : '^\s*\S' }
Run Code Online (Sandbox Code Playgroud)

最后检索该JSON对象并使用backbone.js系统进行客户端验证.可能做缓存.例如(警告!里面的伪代码代码validate()):

<script>
    $(function () {
        window.MyApp = window.MyApp || { Models : {}, Views : {}, Router : {} };

        window.MyApp.Models.Author = Backbone.Models.extend({
            initialize : function() { _.bindAll(this, 'validate') },
            validator : $.get('/author/rules');
            validate: function(attrs) {

               // …
Run Code Online (Sandbox Code Playgroud)

javascript validation symfony backbone.js

10
推荐指数
1
解决办法
1538
查看次数

使用i18n路由时的Symfony2安全性?

我正在使用JMSI18nRoutingBundle进行路由转换,使用自定义配置,这不是所有路由的前缀:

# app/config/config.yml
jms_i18n_routing:
  default_locale: it
  locales: [it, en]
  strategy: custom

www.example.com/contatti
www.example.com/contact
Run Code Online (Sandbox Code Playgroud)

这很好用,就像捆绑一样.不是我必须开发项目的管理部分,当然是保护它.我陷入安全配置(摘录):

# app/config/config.yml
security:
    firewalls:
        secured_area:
            pattern:    ^/
            anonymous: ~
            form_login:
                login_path:  /login
                check_path:  /login_check
Run Code Online (Sandbox Code Playgroud)

login_path是静态定义使用security.yml.那么,我应该如何指定正确的登录(本地化)路径?假设form是accessibile使用:

www.example.com/accesso
www.example.com/login
Run Code Online (Sandbox Code Playgroud)

symfony

10
推荐指数
1
解决办法
2383
查看次数

PHP中使用IntlDateFormatter的本地化(短)月份名称?

在我的Windows开发机器上,我将语言环境设置为ita:

setlocale(LC_TIME, 'ita');
echo strftime('%b'); // dic
Run Code Online (Sandbox Code Playgroud)

虽然(我想,现在无法测试)在*nix系统上,我应该使用it:

setlocale(LC_TIME, 'it');
Run Code Online (Sandbox Code Playgroud)

如果我尝试it在我的Windows 上设置它不起作用,打印Dec.

看来我不能依赖setlocale(),所以我应该IntlDateFormatter按照@hakre的建议使用.但是,我可以找到给我一个月份名称和短名称的常量:

IntlDateFormatter::NONE (integer)
Do not include this element

IntlDateFormatter::FULL (integer)
Completely specified style (Tuesday, April 12, 1952 AD or 3:30:42pm PST)

IntlDateFormatter::LONG (integer)
Long style (January 12, 1952 or 3:30:32pm)

IntlDateFormatter::MEDIUM (integer)
Medium style (Jan 12, 1952)

IntlDateFormatter::SHORT (integer)
Most abbreviated style, only essential data (12/13/52 or 3:30pm)
Run Code Online (Sandbox Code Playgroud)

php datetime locale localization intl

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

Symfony 2中的kernel.request事件中的身份验证令牌始终为空?

我想kernel.request在Symfony 2中为事件编写基本监听器.服务定义非常简单,注释来自JMSDiExtraBundle.

问题是,即使用户完全通过身份验证,它$context->getToken()也始终为null:

/**
 * @Service("request.set_messages_count_listener")
 *
 */
class RequestListener
{

    /**
     * @var \Symfony\Component\DependencyInjection\ContainerInterface
     */
    private $container;

    /**
     * @InjectParams({"container" = @Inject("service_container")})
     *
     */
    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }

    /**
     * @Observe("kernel.request", priority = 255)
     */
    public function onKernelRequest(GetResponseEvent $event)
    {
        $context = $this->container->get('security.context');
        var_dump($context->getToken()); die();
    }

}
Run Code Online (Sandbox Code Playgroud)

我认为我的安全设置工作正常.那可能是什么问题呢?

secured_area:
    pattern:    ^/app/
    switch_user: true
    form_login:
        check_path: /app/login_check
        login_path: /app/login
        default_target_path: /app/dashboard
        always_use_default_target_path: true
    logout:
        path:   /demo/secured/logout # TODO
        target: /demo/ …
Run Code Online (Sandbox Code Playgroud)

authentication events symfony

9
推荐指数
1
解决办法
5688
查看次数

jQuery多个属性选择器与逻辑OR,快捷方式?

选择具有data-toggle属性的所有元素,无论值是否为(href="#myModal"data-target="#myModal").

我用过这个:

$('[data-toggle][href="#myModal"], [data-toggle][data-target="#myModal"]');
Run Code Online (Sandbox Code Playgroud)

不干.有没有简单的方法或功能来做到这一点?

jquery jquery-selectors

9
推荐指数
1
解决办法
8114
查看次数

在symfony2.1表单中使用实体字段类型

使用Symfony 2.1.3-dev和Doctrine 2.3

我正在尝试构建一个表单,为用户提供多个选项来过滤返回的数据集(Entity\EngineCodes).的形式由1个文本输入字段(的id)和3个选择字段(module,type,status).我试图使用Symfony2 entityform_type为EngineCodes实体中的3个选择字段生成值.

因为我想要使用任何3个选择字段的组合来过滤表格.基于2.1文档,我决定创建一个FormType(EngineCodesFilterType)并设置三个表单字段以entity使用query_builder语句键入,以便为每个字段返回一组唯一值.

不幸的是,我收到了跟随错误,我不确定为什么它返回一个数组而不是一个对象.

    The form's view data is expected to be an instance of class
    Vendor\IndexBundle\Entity\EngineCodes, but is a(n) array.
    You can avoid this error by setting the "data_class" option
    to null or by adding a view transformer that transforms a(n)
    array to an instance of Vendor\IndexBundle\Entity\EngineCodes.
Run Code Online (Sandbox Code Playgroud)

如果我设置data_classnull,我收到此错误:

    A "__toString()" method was not …
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony symfony-2.1

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

避免在RequireJS主文件和r.js构建文件中重复"路径"配置?

这是我的文件夹结构(的一部分):

  • 节点测试
    • bower_components
    • 建立
    • 上市
      • main.js
    • build.js

使用r.js -o build.js以下配置运行优化器工作正常:

// main.js file
requirejs.config({
    baseUrl: '../bower_components',
    paths: {
        'domready': 'domready/ready',
        'jquery': 'jquery/jquery',
    }
});

requirejs(['domready', 'jquery'], function (domReady, $) {
    domReady(function () {

    });
});

// build.js file
({
    baseUrl: "bower_components",
    name: "./almond/almond",
    include: "./../public/main",
    out: "build/main.js",
    paths: {
        'domready': 'domready/ready',
        'jquery': 'jquery/jquery',
    },
    preserveLicenseComments: false
})
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除它中的paths配置build.js不再有效:

跟踪以下内容的依赖项:./ golden/almond错误:ENOENT,没有这样的文件或目录'C:\ Users\Marco\Documents\Progetti \nodejs-opt\bower_components\domready.js'在模块树中:../ public /main

错误:错误:ENOENT,没有这样的文件或目录'C:\ Users\Marco\Documents\Progetti \nodejs-opt\bower_components\domready.js'在模块树中:../ public /main

at Object.fs.openSync (fs.js:427:18)
Run Code Online (Sandbox Code Playgroud)

我想要干,避免两次添加依赖.这可能吗?

javascript requirejs almond r.js

9
推荐指数
1
解决办法
4319
查看次数

用这个表不能实现覆盖指数(2个等值和一个选择)?

CREATE TABLE `discount_base` (
  `id` varchar(12) COLLATE utf8_unicode_ci NOT NULL,
  `amount` decimal(13,4) NOT NULL,
  `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `family` varchar(4) COLLATE utf8_unicode_ci NOT NULL,
  `customer_id` varchar(8) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_CUSTOMER` (`customer_id`),
  KEY `IDX_FAMILY_CUSTOMER_AMOUNT` (`family`,`customer_id`,`amount`),
  CONSTRAINT `FK_CUSTOMER` FOREIGN KEY (`customer_id`) 
      REFERENCES `customer` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

我添加了一个覆盖指数IDX_FAMILY_CUSTOMER_AMOUNTfamily,customer_id而且amount因为大部分时间我用下面的查询:

SELECT amount FROM discount_base WHERE family = :family AND customer_id = :customer_id
Run Code Online (Sandbox Code Playgroud)

然而,使用EXPLAIN …

mysql sql indexing optimization

9
推荐指数
1
解决办法
289
查看次数