Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2:订单字段_Php_Symfony_Symfony 2.5 - Fatal编程技术网

Php Symfony2:订单字段

Php Symfony2:订单字段,php,symfony,symfony-2.5,Php,Symfony,Symfony 2.5,考虑这段代码: public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('name', 'text') ->add('description', 'textarea') ->add('status', 'choice', array('choices' => array('online' =&g

考虑这段代码:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', 'text')
        ->add('description', 'textarea')
        ->add('status', 'choice', array('choices' => array('online' => 'online', 'offline' => 'offline')))
        ->add('save', 'submit');
}
但是当我呈现这个表单时,我会按顺序得到它

description
name
status

除了手工编写表单模板外,我还可以如何更改此设置。

您可以使用bundle。也许有一天它会被整合进核心。目前,symfony表单组件没有任何订单选项。

您可以使用bundle。也许有一天它会被整合进核心。目前,symfony表单组件没有任何顺序选项。

您希望从PHP控制呈现顺序,但实际上,您的PHP不应该知道,也不应该关心信息的呈现方式。渲染顺序在模板中处理,最好是通过细枝处理,因为处理这一点是模板的责任。这是一个直截了当的过程,给了你足够的控制。以下细枝模板应该可以修复您的订单:

{{form_start(nameOfFormVariablePassedFromController}}
    {{form_label(nameOfFormVariablePassedFromController.name)}}
    {{form_widget(nameOfFormVariablePassedFromController.name)}}

    {{form_label(nameOfFormVariablePassedFromController.description)}}
    {{form_widget(nameOfFormVariablePassedFromController.description)}}

    {{form_label(nameOfFormVariablePassedFromController.status)}}
    {{form_widget(nameOfFormVariablePassedFromController.status)}}

    {{form_widget(nameOfFormVariablePassedFromController.save)}}
{{form_end(nameOfFormVariablePassedFromController}}

通过添加额外的参数,可以很容易地向这些标签和小部件添加类以进行样式设置。如果您需要进一步澄清,我可以提供帮助。

您希望从PHP控制呈现顺序,但实际上,您的PHP不应该知道,也不应该关心信息的呈现方式。渲染顺序在模板中处理,最好是通过细枝处理,因为处理这一点是模板的责任。这是一个直截了当的过程,给了你足够的控制。以下细枝模板应该可以修复您的订单:

{{form_start(nameOfFormVariablePassedFromController}}
    {{form_label(nameOfFormVariablePassedFromController.name)}}
    {{form_widget(nameOfFormVariablePassedFromController.name)}}

    {{form_label(nameOfFormVariablePassedFromController.description)}}
    {{form_widget(nameOfFormVariablePassedFromController.description)}}

    {{form_label(nameOfFormVariablePassedFromController.status)}}
    {{form_widget(nameOfFormVariablePassedFromController.status)}}

    {{form_widget(nameOfFormVariablePassedFromController.save)}}
{{form_end(nameOfFormVariablePassedFromController}}

通过添加额外的参数,可以很容易地向这些标签和小部件添加类以进行样式设置。如果您需要进一步澄清,我可以提供帮助。

今天在表单元素排序方面也有同样的问题

以一个特性结束,该特性将覆盖finishView方法并对FormView的子属性中的项重新排序:

然后在类型中实现getFieldsOrder方法:


今天的表单元素排序也有同样的问题

以一个特性结束,该特性将覆盖finishView方法并对FormView的子属性中的项重新排序:

然后在类型中实现getFieldsOrder方法:


我已经这么想了。严格说来,你是对的,但还是觉得有点奇怪。一开始似乎有点冗长,但将演示与逻辑分离是一种被广泛认可的最佳实践,可以轻松修改其中一种,而不会影响另一种,因此你最好接受它。我已经这样认为了。严格说来,你是对的,但还是觉得有点奇怪。一开始似乎有点冗长,但将演示与逻辑分离是一种广受认可的最佳实践,可以轻松修改其中一种,而不会影响另一种,因此你最好接受它。
use OrderedTrait;

function getFieldsOrder()
{
    return [
        'first',
        'second',
        'next',
        'etc.',
    ];
}