小编Ala*_*blo的帖子

如何在没有任何自定义Form Type类的情况下创建多个字段的集合?

我有很多要创建的集合,并且不想为每个entry_type创建FormType,因为它们只使用一次.

因此entry_type,我没有在选项中提供表单类型FQCN ,而是尝试Type直接从表单生成器中添加一个新的:

$type = $this
   ->get('form.factory')
   ->createBuilder(Type\FormType::class)
   ->add('label', Type\TextType::class, [
       'label' => 'Key',
   ])
   ->add('value', Type\TextType::class, [
       'label' => 'Value',
   ])
   ->getType()
;

$form = $this
   ->get('form.factory')
   ->createBuilder(Type\FormType::class)
   ->add('hash', Type\CollectionType::class, [
       'entry_type'    => $type,
       'entry_options' => [],
       'allow_add'     => true,
       'allow_delete'  => true,
       'prototype'     => true,
       'required'      => false,
       'delete_empty'  => true,
   ])
   ->getForm()
;
Run Code Online (Sandbox Code Playgroud)

但由于某些原因,原型无效:

<div class="form-group">
    <label class="control-label required">__name__label__</label>
    <div id="form_hash___name__"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我手动创建的所有子字段$type都丢失了.我的错误在哪里?

php forms collections symfony

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

获取当前路线树枝

我想在树枝上获取当前路线,我使用了这两个代码,但总是失败

代码1:

 {% if app.request.get('_route') == 'my_route' %}
      //Do something
 {% endif %}
Run Code Online (Sandbox Code Playgroud)

代码2:

{% if app.request.attributes.get == 'my_route' %}
      //Do something
 {% endif %}
Run Code Online (Sandbox Code Playgroud)

symfony twig

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

如何在Symfony2中正确启用twig的沙箱扩展?

在Symfony2中,默认情况下禁用了一些Twig模块.其中一个是调试扩展,它添加了{% debug %}标记(在开发环境中很有用).

要启用它,没有什么困难,您可以将此服务添加到您的配置中:

  debug.twig.extension:
    class: Twig_Extensions_Extension_Debug
    tags:
      - { name: 'twig.extension' }
Run Code Online (Sandbox Code Playgroud)

但是如何启用{% sandbox %}标签?

我的问题是扩展的构造函数采用安全策略:

public function __construct(Twig_Sandbox_SecurityPolicyInterface $policy, $sandboxed = false)
{
    $this->policy            = $policy;
    $this->sandboxedGlobally = $sandboxed;
}
Run Code Online (Sandbox Code Playgroud)

通过阅读twig文档,我看到了本机的方式(没有Symfony2):

$tags = array('if');
$filters = array('upper');
$methods = array(
    'Article' => array('getTitle', 'getBody'),
);
$properties = array(
    'Article' => array('title', 'body'),
);
$functions = array('range');
$policy = new Twig_Sandbox_SecurityPolicy($tags, $filters, $methods, $properties, $functions);
$sandbox = new Twig_Extension_Sandbox($policy);
$twig->addExtension($sandbox);
Run Code Online (Sandbox Code Playgroud)

在使用沙盒之前,我可以在服务中做类似的事情,但这并不像我们习惯的依赖注入那么清晰.

是否有更好/正确的方法在Symfony2中启用twig的沙箱扩展?

php sandbox symfony twig

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

array_search无法按预期工作

我有以下数组:

$array = array (
    'a' => 'A',
    'b' => 'B',
    'c' => 'C'
);
Run Code Online (Sandbox Code Playgroud)

我想了解这种行为:

// true, normal behaviour, there is a 'A' value in my array
echo array_search('A', $array) === 'a';

// true, normal behaviour, there is no 1 value in my array
echo array_search(1, $array) === false;

// true ???? there is no 0 as value in my array
echo array_search(0, $array) === 'a';
Run Code Online (Sandbox Code Playgroud)

为什么array_search(0, $array)返回我的数组的第一个键?

php arrays type-conversion

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

目标C:排序二维数组

我有一个数组数组.包含的数组的第一个元素都是NSDate对象.我想按顺序从最新到最少排序包含数组的数组.由于某种原因,下面的排序算法导致无限循环.谁能帮我吗?谢谢.

最佳... SL

//array is the array containing all of the other arrays(that have NSDates as their first elements)
//temp is the new array being added to the end of the array, to later be sorted into the correct position.

[array addObject:temp];    
NSMutableArray *tempArray;

for (int i=0; i<[array count]; i++) 
{
    NSDate *session1, *session2;
    session1 = [[array objectAtIndex:i] objectAtIndex:0];
    session2 = [[array objectAtIndex:[array count]-1] objectAtIndex:0];

    if([session1 compare:session2] == NSOrderedDescending)
{
        tempArray = [array objectAtIndex:i];
        [array insertObject:[array objectAtIndex:[array count]-1] atIndex:i];
        [array …
Run Code Online (Sandbox Code Playgroud)

sorting nsdate ios

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

在App Engine运行时PHP 7.2上启用Memcached

自几天以来,我一直在尝试使用Symfony框架在Google App Engine的内存缓存中启用会话存储。应用程序启动良好,Memcached实例存在,但我总是以未存储的会话(所有形式的CSRF等)结束。

因此,我创建了一个非常简单的POC,以检查Memcached是否正常工作,而实际上却没有。

这是POC代码:

app.yaml

runtime: php72

resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10
Run Code Online (Sandbox Code Playgroud)

php.ini

extension=memcached.so
Run Code Online (Sandbox Code Playgroud)

index.php

<?php

$test = new \Memcached;
var_dump( $test->add('test', '42') );
echo 'value of test is: ', $test->get('test');
Run Code Online (Sandbox Code Playgroud)

以下代码的结果是:

测试的bool(false)值为:

Memcache与App Engine集成良好,因此我想知道为什么我无法实现它。


调试Memcached,错误如下:

(0x75b27c3c040)未定义服务器-> libmemcached / initialize_query.cc:58

知道如何正确配置吗?

php google-app-engine memcached

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

如何调整gd图像的大小以适应写在其中的文本?

我想调整GD图像的大小,使其内容适合图像.

这显然是可能的吗?

php gd

0
推荐指数
1
解决办法
1225
查看次数

创建自己的html属性的最佳方法是什么?

我在HTML标签上创建了一些属性,以便与jQuery及其$(selector).attr()方法一起使用.例如,如果我有一个带有生成字段的动态表单,我将有一个index="xxx"属性.

在不违反doctype的情况下创建此类自定义属性的最佳方法是什么?

html jquery doctype

0
推荐指数
1
解决办法
84
查看次数

为什么这个$ .isFunction返回false?

我创建了一个jquery函数,但是如果函数名在字符串中,$ .isFunction似乎总是返回false.

(function( $ ) {
    $.myTest = function() {
       return true;
    }
})( jQuery );

alert($.isFunction('$.myTest'));
Run Code Online (Sandbox Code Playgroud)

小提琴:这里.

注意:如果我删除引号(例如alert($.isFunction($.myTest));,它可以工作,但我的函数在字符串中.

编辑

这个函数名在一个字符串里面,因为我创建了一个插件来从dom元素中的参数创建ajax.例如 :

        data-route="xxx.php"
        data-lock=".buttonsToLock"
        data-output="#outputContainer"
        data-callback-after="$.myTest"
Run Code Online (Sandbox Code Playgroud)

但我无法检查是否data-callback-after是现有功能.

任何的想法?

谢谢

jquery

0
推荐指数
1
解决办法
378
查看次数

使用复选框模拟单选按钮,只触发一次更改事件?

我想使用复选框模拟单选按钮行为,这表示:

选中复选框后,将取消选中所有其他具有相同名称的复选框(此处为选择器)

但是,如果我尝试做类似的事情:

$('body').delegate('.myradio', 'click', function(e) {
    $('.myradio').prop('checked', false);
    $(this).prop('checked', true);
});
Run Code Online (Sandbox Code Playgroud)

这会触发change事件两次.

如果我尝试添加e.preventDefault:

$('body').delegate('.myradio', 'click', function(e) {
    $('.myradio').prop('checked', false);
    $(this).prop('checked', true);
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

根本不会触发任何事件,也不会选中该复选框.

最后,如果我尝试自己触发事件:

$('body').delegate('.myradio', 'click', function(e) {
    $('.myradio').prop('checked', false);
    $(this).prop('checked', true);
    e.preventDefault();
    $(this).change();
});
Run Code Online (Sandbox Code Playgroud)

change事件也被调用两次.

有关信息,我的所有复选框都有唯一的ID.

除了选中的复选框之外,禁用所有复选框的方法是什么?

checkbox jquery radio-button

0
推荐指数
1
解决办法
1993
查看次数