Php ZF2垂直形式

Php ZF2垂直形式,php,html,forms,zend-framework2,Php,Html,Forms,Zend Framework2,我在典型的ZF2应用程序中创建了一个简单的表单。表单类代码只是Zend的Album示例提供的修改代码 <?php namespace Admin\Form; use Zend\Form\Form; class CityForm extends Form { public function __construct($name = null) { parent::__construct('city'); $this->setAttri

我在典型的ZF2应用程序中创建了一个简单的表单。表单类代码只是Zend的Album示例提供的修改代码

<?php
namespace Admin\Form;

use Zend\Form\Form;

class CityForm extends Form
{
    public function __construct($name = null)
    {
        parent::__construct('city');

        $this->setAttribute('method', 'post');

        $this->add(array(
            'name' => 'id',
            'attributes' => array(
                'type'  => 'hidden',
            ),
        ));

        $this->add(array(
            'name' => 'name',
            'attributes' => array(
                'type' => 'text'
            ),
            'options' => array(
                'label' => 'Name',
            ),
        ));

        $this->add(array(
            'name' => 'province',
            'attributes' => array(
                'type' => 'text'
            ),
            'options' => array(
                'label' => 'Province',
            ),
        ));

        $this->add(array(
            'name' => 'country',
            'attributes' => array(
                'type' => 'text'
            ),
            'options' => array(
                'label' => 'Country',
            ),
        ));

        $this->add(array(
            'name' => 'coordinate',
            'attributes' => array(
                'type' => 'text'
            ),
            'options' => array(
                'label' => 'Coordinate',
            ),
        ));

        $this->add(array(
            'name' => 'submit',
            'attributes' => array(
                'type'  => 'submit',
                'value' => 'Save',
                'id'    => 'submitButton',
            ),
        ));
    }
}
最后,在我看来,我是这样回应的:

<?php $title = 'Add New City'; ?>
<?php $this->headtitle($title); ?>
<h1><?php echo $this->escapehtml($title); ?></h1>
<?php $form = $this->form; ?>
<?php $form->setAttribute('action', $this->url('city', array('action' => 'add'))); ?>
<?php $form->prepare(); ?>
<?php 
echo $this->form()->openTag($form);
echo $this->formHidden($form->get('id'));
echo $this->formRow($form->get('name'));
echo $this->formRow($form->get('province'));
echo $this->formRow($form->get('country'));
echo $this->formRow($form->get('coordinate'));
echo $this->formSubmit($form->get('submit'));
echo $this->form()->closeTag();
?>

我希望看到的是这样的垂直形式:

但我得到的是这样一个丑陋的形式:

我的代码怎么了?请帮忙

编辑:

当我检查元素时,生成的表单很奇怪。
元素位于
元素内部

<form id="city" name="city" method="post" action="/karciscus/public/admin/city/add">
    <input type="hidden" value="" name="id">
    <label>
        <span>Name</span><input type="text" value="" name="name">
    </label>
    <label>
        <span>Province</span><input type="text" value="" name="province">
    </label>
    <label>
        <span>Country</span><input type="text" value="" name="country">
    </label>
    <label>
    <span>
        Coordinate</span><input type="text" value="" name="coordinate">
    </label>
    <input type="submit" value="Save" id="submitButton" name="submit">
</form>

名称
省
国家
坐标

我很确定这就是我丑陋的表现形式的原因。我认为事情并非如此。如何修复它?

这是您必须在css中执行的操作。 为标签指定一个固定的宽度/长度将正确对齐标签。
如果您想实现上面的示例,请为标签添加display:block,然后它们将分别采用一整行,就像块元素一样。

已修复。对于其他与我有相同经验的人,只需在form class中添加元素id即可:

$this->add(array(
    'name' => 'name',
    'attributes' => array(
        'type' => 'text',
        'id'   => 'name', // Must have id, will render strange otherwise!
    ),
    'options' => array(
        'label' => 'Name',
    ),
));

这为我解决了这个问题。

使用Zf2附带的内置twitter引导css。使用div渲染表单元素。我知道每个人都认为你在.html上设置的表单数据是纯php数据,你不能对齐它

<div class="row"> 
<?php $title = 'Add New City'; ?>
<div>

<div class="row">

<?php $this->headtitle($title); ?>
<h1><?php echo $this->escapehtml($title); ?></h1>
<?php $form = $this->form; ?>
<?php $form->setAttribute('action', $this->url('city', array('action' => 'add'))); ?>
<?php $form->prepare(); ?>
<?php 
echo $this->form()->openTag($form);
echo $this->formHidden($form->get('id'));
echo $this->formRow($form->get('name'));
echo $this->formRow($form->get('province'));
echo $this->formRow($form->get('country'));
echo $this->formRow($form->get('coordinate'));
echo $this->formSubmit($form->get('submit'));
echo $this->form()->closeTag();
?>
</div>


这就是示例……试着做你喜欢做的事情,就像我上面展示的那样,你就可以开始了。

我试过了,但没有任何改变。我认为这是因为.phtml视图中呈现的表单代码错误。你知道吗,先生?
<div class="row"> 
<?php $title = 'Add New City'; ?>
<div>

<div class="row">

<?php $this->headtitle($title); ?>
<h1><?php echo $this->escapehtml($title); ?></h1>
<?php $form = $this->form; ?>
<?php $form->setAttribute('action', $this->url('city', array('action' => 'add'))); ?>
<?php $form->prepare(); ?>
<?php 
echo $this->form()->openTag($form);
echo $this->formHidden($form->get('id'));
echo $this->formRow($form->get('name'));
echo $this->formRow($form->get('province'));
echo $this->formRow($form->get('country'));
echo $this->formRow($form->get('coordinate'));
echo $this->formSubmit($form->get('submit'));
echo $this->form()->closeTag();
?>
</div>