小编Pol*_*ino的帖子

是否有Symfony2默认容器服务列表?

以下是一个来自Symfony2网站的关于定义自定义服务(YAML表示法)的示例:

services:
    newsletter_manager:
        class:     %newsletter_manager.class%
        arguments: [@mailer, @templating]
Run Code Online (Sandbox Code Playgroud)

是否有一个默认的Symfony2服务对象的名单可以注入定制服务的参数(如@mailer,@templating,@doctrine)?

我知道它们来自Container(例如,每个Controller班级都有).我试图转储所有服务,但我正在寻找更详细的列表:

php app/console container:debug

logger container Symfony\Bridge\Monolog\Logger
mailer container Swift_Mailer
translator n/a alias for translator.default
...
Run Code Online (Sandbox Code Playgroud)

dependency-injection symfony

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

请求标头包缺少Symfony 2中的授权标头?

我正在尝试在Symfony 2中实现自定义身份验证提供程序.我正在使用Fiddler发送测试请求并打印所有标头服务器端; 好吧,Authorization标题丢失了.

难道我做错了什么?

GET /RESTfulBackend/web/index.php HTTP/1.1
Authorization: FID 44CF9590006BF252F707:jZNOcbfWmD/
Host: localhost
User-Agent: Fiddler
Accept: 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
Run Code Online (Sandbox Code Playgroud)

Listener只打印标题并退出:

class HMACListener implements ListenerInterface
{
    private $securityContext;

    private $authenticationManager;

    public function handle(GetResponseEvent $event)
    {
        $request = $event->getRequest();
        print_r($request->headers->all()); 
        die();
     }
}
Run Code Online (Sandbox Code Playgroud)

响应缺少Authorization标题:

Array
(
    [host] => Array
        (
            [0] => localhost
        )
    [user-agent] => Array
        (
            [0] => Fiddler
        )
    [accept] => Array
        (
            [0] => text/html,application/xhtml+xml,application/xml
        )
    [accept-language] => Array
        (
            [0] => it-it,it;q=0.8,en-us;q=0.5,en;q=0.3 …
Run Code Online (Sandbox Code Playgroud)

php http fiddler http-headers symfony

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

Symfony2表单事件的描述?

这是FormEvents来自github上的Symfony2存储库的类.它与主要文章" 如何使用表单事件动态生成表单"相关联.

任何人都知道在流程中调用这些事件的确切时间?

namespace Symfony\Component\Form;

/**
 * @author Bernhard Schussek <bernhard.schussek@symfony.com>
 */
final class FormEvents
{
    const PRE_BIND = 'form.pre_bind';
    const POST_BIND = 'form.post_bind';
    const PRE_SET_DATA = 'form.pre_set_data';
    const POST_SET_DATA = 'form.post_set_data';
    const BIND_CLIENT_DATA = 'form.bind_client_data';
    const BIND_NORM_DATA = 'form.bind_norm_data';
    const SET_DATA = 'form.set_data';
}
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony

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

从Symfony2/Twig中的2位数国家代码中获取翻译的国家/地区名称?

我正在使用Symfony2 国家/地区字段类型,它运行良好并且国家/地区名称已翻译.我将两位数的国家/地区代码存储在country我的实体列中.

如何显示完整的已翻译国家/地区名称?这是我将字段添加到表单的方式:

$builder
    ->add('country', 'country', array(
        'label' => 'Paese', 'preferred_choices' => array('IT')
    ));
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中:

$user = $this->getDoctrine()->getRepository('AcmeHelloBundle:User');
$countryCode = $user->getCountry();
$countryName = null; // Get translated country name from code
Run Code Online (Sandbox Code Playgroud)

或者在我的树枝模板中:

{# Output the country code and name #}
{{ user.country }}

{# translated country name from code #}
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony twig

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

显式打印CSRF令牌字段而不是form_rest(表单)?

如何显式打印CSRF字段而不是使用{{ form_rest(form) }}

我需要这个,因为我将根据条件隐藏/显示一些字段,但是{{ form_rest(form) }}要打印所有剩余的字段(这是我想要避免的).

forms symfony-forms symfony

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

Symfony2实体字段类型替代"property"或"__toString()"?

使用Symfony2 实体字段类型应指定property选项:

$builder->add('customers', 'entity', array(
    'multiple' => true,
    'class'    => 'AcmeHelloBundle:Customer',
    'property' => 'first',
));
Run Code Online (Sandbox Code Playgroud)

但有时这还不够:想想两个同名的客户,所以显示电子邮件(唯一)是强制性的.

另一种可能性是__toString()在模型中实现:

class Customer
{
    public $first, $last, $email;

    public function __toString()
    {
        return sprintf('%s %s (%s)', $this->first, $this->last, $this->email);
    }
}
Run Code Online (Sandbox Code Playgroud)

后者的缺点是你被迫在所有形式中以相同的方式显示实体.

有没有其他方法可以使这更灵活?我的意思是像回调函数:

$builder->add('customers', 'entity', array(
    'multiple' => true,
    'class'    => 'AcmeHelloBundle:Customer',
    'property' => function($data) {
         return sprintf('%s %s (%s)', $data->first, $data->last, $data->email);
     },
));
Run Code Online (Sandbox Code Playgroud)

forms symfony-forms symfony

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

在Symfony中修改绑定表单数据的建议位置是哪个?

我有一个创建新的表单Customer.客户可能拥有手机号码.移动号码应该没有+00用户可以键入的前缀.这可以通过以下方式轻松完成:

$customer->setMobile(preg_replace("/^(\+|00)/", '', $customer->getMobile()));
Run Code Online (Sandbox Code Playgroud)

放置此代码的最佳位置是哪个?

  • CustomerController调用实体管理器之前并保持实体.这真的是MVC模式中的控制器问题吗?
  • 使用SanitizeCustomerSubscriber和听取FormEvents:POST_BIND事件
  • 使用CustomerSanitizer服务

还有其他想法吗?当然,我说的是一般的数据操作,手机号码只是一个例子:要消毒的字段可能不仅仅是一个.

symfony-forms symfony

14
推荐指数
2
解决办法
8479
查看次数

如何检查ini_set是否可以在服务器上运行?

如何检查服务器配置是否允许我设置如下选项:

ini_set('upload_max_filesize', '8M');
Run Code Online (Sandbox Code Playgroud)

在PHP脚本中?这是一个php.ini指令的列表,但我无法弄清楚如何在更改该值之前进行检查.

php administration

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

以编程方式将路由添加到Backbone.Router?

这是我的application-router.js文件,我Backbone.Router只用几条路线创建对象:

var App = App || {};

App.Router =  Backbone.Router.extend({
    routes : {
        ''      : 'showDashboard', // Not shown
        '*other': 'showModalError'
    },
    defaultRoute : function(other) { $('#modal404').modal(); }
});
Run Code Online (Sandbox Code Playgroud)

在主javascript文件中,application.js我想以编程方式添加路由.我已尝试使用route()函数,但它不起作用,不添加路由.然而它将一个对象传递给"构造函数",但是它会覆盖已定义的路径:

// This works and overrides all defined routes in App.Router
var router = new App.Router({ routes : { '/test/me' : 'testRoute' } });

// This is not working
router.route(ExposeTranslation.get('customers.new.route'), 'newCustomer');
router.route('/test/me/again', 'testAgainRoute');
Run Code Online (Sandbox Code Playgroud)

实际上console.log(App.Router)表明:

routes Object { /test/me="testRoute"}
Run Code Online (Sandbox Code Playgroud)

我想我错过了一些我无法弄清楚的东西,我开始学习这一小块强大的javascript.

routing backbone.js backbone-routing

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

用Twig将字符串分解为数组?

是否有基于分隔符将字符串拆分为块的功能?join过滤器的反面.

我的意思是explode在PHP中.我需要检查class参数是否包含给定的字符串:

{% macro nav_item(route, label, class, tooltip, placement) %}
{% spaceless %}
    {% if 'icon-white' in class|explode(' ') %}
    {% edif %}
{% endspaceless %}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

symfony twig

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