0

我正在尝试在表单中使用列。

我有下一个代码,它产生列

代码是这样的:

$col=$this->add('Columns');
$left=$col->add($f->addField('text','observaciones'));
$right=$col->add($f->addField('line','cantidad_de_bocas'));

列的字段基于表单字段。我想在列中添加多个字段(例如左列上的 2 个字段和右列上的 4 个字段)。

我看过一些关于这个的例子,比如

$col=$page->add('Columns');
$left=$col->addColumn(2)->add('View_SlotMachine');
$right=$col->addColumn(2)->add('View_SlotMachine');
  • 为什么字段重复?
  • addColumn(2) 方法有什么作用?

很感谢

4

1 回答 1

0

如果您还没有使用 atk 4.1 进行开发,您可以下载 4.2 并查看此处的示例。您可以利用 4.2 中的许多新功能,并且正在更新演示和示例以反映这些更改。

在 4.2 中,有一个这样的两列样式示例

class StylingForm extends Form {
  function init(){
    parent::init();
    $f=$this;

    $f->addField('line','name')->validateNotNull()
        ->setFieldHint('Click "Register" to see error');
    $f->addField('line','email')
        ->validateNotNull()
        ->validateField('filter_var($this->get(), FILTER_VALIDATE_EMAIL)')

    .. .. ..

 }

 functoin init() {
   // Stacked class puts labels on top of fields
   $form=$page->add('StylingForm');
   $form->addClass('stacked atk-row');

   $form->template->trySet('fieldset','span6');
   $sep=$form->addSeparator('span6');
   $form->add('Order')->move($sep,'before','age')->now();

 }

在 atk4.1 中,表单是一个视图,因此它在 atk4/templates/shared/view/form.html 中有一个模板,在 atk4/lib/View/form.php 中有一些代码

在您从此处提到的老虎机示例中,addColumns(2) 用于将视图的宽度设置为可用屏幕宽度的 20%,但在示例中,每一列都将包含老虎机的视图. 如果您想在同一页面上创建表单,您可以使用相同的功能,但您似乎想要的是跨两列的单个表单,带有一个提交按钮。

如果非要继续使用atk4.1,则需要查看form.html。Romans 可能会建议您如何在该版本中创建两列表单。我可以看到在 css 中定义了一些类,例如 atk-form-vertical-2col 和 atk-form-vertical-3col 并且有一个函数 setFormClass 来设置它们,但我看不到您将设置哪些标签来将字段放入右手边 - 默认情况下,一切都在左边。

于 2012-07-26T02:31:28.520 回答