理解 zend 中的网格布局

2023-12-12

我对 zend 中的表单设计有点困惑。 我知道我的表单类中有字段,并且外观应该在视图中完成。

在几乎是纯 html 的索引视图中,我没有问题,但在显示我的表单的添加和编辑视图中,我在更改外观时遇到问题。

我有一个如下的视图脚本:

 <?php
$title = 'AVB ändern';        
$this->headTitle($title);
?>
<h1><?= $this->escapeHtml($title) ?></h1>
<?php

$id= $form->get('id');
$id->setAttribute('class', 'form-control');
$id->setAttribute('placeholder', 'id');

$avbname= $form->get('avbname');
$avbname->setAttribute('class', 'form-control');
$avbname->setAttribute('placeholder', 'avbname');

$vbedingungen= $form->get('vbedingungen');
$vbedingungen->setAttribute('class', 'form-control');
$vbedingungen->setAttribute('placeholder', 'vbedingungen');

$versichererid= $form->get('versichererid');
$versichererid->setAttribute('class', 'form-control');
$versichererid->setAttribute('placeholder', 'versichererid');

$aktiv= $form->get('aktiv');
$aktiv->setAttribute('class', 'form-control');
$aktiv->setAttribute('placeholder', 'aktiv');

$submit = $form->get('submit');
$submit->setAttribute('class', 'btn btn-primary');


$form->prepare();

echo $this->form()->openTag($form);
?>
<div class="form-group">
    <?= $this->formElement($id) ?>
    <?= $this->formElementErrors()->render($id, ['class' => 'help-block']) ?>
</div>

<div class="form-group">
    <?= $this->formLabel($avbname) ?>
    <?= $this->formElement($avbname) ?>
    <?= $this->formElementErrors()->render($avbname, ['class' => 'help-block']) ?>
</div>

<div class="form-group">
    <?= $this->formLabel($vbedingungen) ?>
    <?= $this->formElement($vbedingungen) ?>
    <?= $this->formElementErrors()->render($vbedingungen, ['class' => 'help-block']) ?>
</div>

<div class="form-group">
    <?= $this->formLabel($versichererid) ?>
    <?= $this->formElement($versichererid) ?>
    <?= $this->formElementErrors()->render($versichererid, ['class' => 'help-block']) ?>
</div>

<div class="form-group">
    <?= $this->formLabel($aktiv) ?>
    <?= $this->formElement($aktiv) ?>
    <?= $this->formElementErrors()->render($aktiv, s['class' => 'help-block']) ?>
</div>

<?php
echo $this->formSubmit($submit);
echo $this->formHidden($form->get('id'));      
$form->setAttribute('action', $this->url('typavb', ['action' => 'edit']));    
echo $this->form()->closeTag();

当然,它显示了一个字段在另一个字段之下。 如何连续显示两个字段(带有标签)? 我真的很感激一个好的教程的例子或提示,它展示了如何使用 zend3 概念正确地做到这一点。

它甚至是在视图中执行此操作的正确位置,还是我需要一个新的layout.phtml来处理这种情况?


要单独打印 Elements 的各个部分,ZF 中预定义了几个函数。您可以在以下位置找到所有内容\Zend\Form\ConfigProvider->getViewHelperConfig(), see 在 Github 上.

就你而言,你已经在使用formLabel, formElement and formElementErrors.

如果您有像货币这样的东西,您希望用户填写金额并选择货币但只使用单个标签,那么这些对于单独使用很方便,例如:

$this->formLabel($form->get('amount'));
$this->formElement($form->get('amount'));
$this->formElementErrors($form->get('amount'));
$this->formElement($form->get('currency'));
$this->formElementErrors($form->get('currency'));

整个“表单行”由以下部分组成:

  • 标签(可选)
  • Element
  • ElementErrors(如果在服务器端验证后出现)

因此,在本例中您需要整个“金额”位,您可以将上面的内容缩短为:

$this->formRow($form->get('amount'));             // prints all elements for the row
$this->formElement($form->get('currency'));
$this->formElementErrors($form->get('currency'));

如果您仔细查看链接ConfigProvider的“zendframework/zend-form”,您可能已经注意到还有一个form查看助手。这可用于一次性打印整个表单,如下所示:

文件:add-foo.phtml

    <?= $this->form($form) ?>

就是这样。它打印整个表格。当然,它使用 ZF 定义的 ViewHelpers,同样也应用了该布局和类。

如果您愿意,可以采用该配置并在您自己的项目中覆盖它。

例如,您的问题代码显示您添加<div class="form-group"></div>每一行周围。大概适用于 Bootstrap 4。要神奇地做到这一点,你不需要这样做:

    <div class="form-group">
        <?= $this->formRow($form->get('foo')) ?>
    </div>

我们可以调整formRow查看助手。只需按照以下步骤操作:

  1. 创建一个FormRow.php在您自己的项目中,例如module/Foo/src/View/Helper/FormRow.phtml
  2. 确保从 ZF 的 FormRow 扩展它并复制到原始 (ZF)render函数,就像这样:
    use Zend\Form\View\Helper\FormRow as ZendFormRow;

    class FormRow extends ZendFormRow
    {
        public function render(ElementInterface $element, $labelPosition = null)
        {
            // its content
        }
    }
  1. 我们想要添加一个包装器(form-groupclass div),因此在类中定义它,如下所示:
    class FormRow extends ZendFormRow
    {
        protected $inputRow = '<div class="form-group">%s</div>';
        // the other stuff
    }
  1. 在底部render函数,你会发现以下代码(在else):
    if ($this->renderErrors) {
        $markup .= $elementErrors;
    }

放在上面之后:

    $markup = sprintf(
        $this->inputRow,
        $markup,
    );
  1. 使用与 ZF 相同的别名注册新的 ViewHelper 以覆盖这些值:
    'view_helpers'    => [
        'aliases'    => [
            'formrow'             => FormRow::class,
            'form_row'            => FormRow::class,
            'formRow'             => FormRow::class,
            'FormRow'             => FormRow::class,
        ],
        'factories'  => [
            FormRow::class           => InvokableFactory::class,
        ],
    ],

Done.

现在当你这样做时$this->form($form) the FormElementZendFramework 的 ViewHelper 将收到您的自定义formRowViewHelper 当它的 Factory 执行时->get('formRow'),因为配置会被覆盖为您自己的配置。因此,所有行现在都会自动具有周围的 div。


比你要求的多一点,但是玩得开心;)我现在要停止逃避工作了O:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解 zend 中的网格布局 的相关文章

  • zend-framework 主义和 MVC 模式:模型和表单之间应该用什么样的层来连接数据?

    我正在学习 Zend Framework 和 Doctrine 我想知道将表单连接到模型的最佳实践是什么 反之亦然 在某些情况下 从表单类中的模型加载数据很方便 可以说是一个非常独特的类 它使用了许多模型 在其他情况下 在模型类中使用为表单
  • Zend_Framework- 在哪里放置 $_GET 和 $_POST (HTTP 请求)处理?

    我最近读过这个帖子 http blog astrumfutura com archives 373 The M in MVC Why Models are Misunderstood and Unappreciated html这导致了一系
  • 由于 zend 路线,zend 导航无法工作

    EDIT 该问题是由于 zend 路由引起的 请检查更新 我正在使用 xml 文件进行导航 编辑 以下代码来自layout phtml文件 config new Zend Config Xml APPLICATION PATH config
  • 解析 JSON 到 MySQL 表

    我正在使用 Zend Framework 1 12 我想创建一个基于 JSON 文件的表 我已经创建了表及其字段 现在它们都是长文本 它所要做的就是将它们插入到正确的列中 我遵循了这些例子 http www daniweb com web
  • application.ini 中的多个 Zend_Mail 配置

    我正在使用 Zend 框架 我需要在 Zend Mail 的 application ini 中放置多个邮件配置 使用 Zend Application Resource Mail 是否可以使用 Zend Framework 中的标准类来执
  • Zend 覆盖默认视图对象

    如何覆盖 zend 框架中的默认视图对象 以便我可以拥有自定义视图对象 class Bootstrap extends Zend Application Bootstrap Bootstrap function initViewHelper
  • 如何在 Zend Framework 中制作电子邮件模板?

    我想在 Zend Framework 中制作电子邮件模板 例如 Dear username br This is a invitation email sent by your friend br Regards br Admin 我想制作
  • Zend Framework 路由:.html 扩展名

    我知道我以前见过这样做 但我在任何地方都找不到信息 我需要能够在 Zend Framework 中使用 html 扩展名进行路由 IE controller action html 应路由到适当的控制器 操作 我们有一个想法 用 htacc
  • Lucene外来字符问题

    我在使用 Zend Lucene 和 等外来字符时遇到了一些严重的问题 这些问题在创建索引和查询索引时都会出现 我已经尝试过 iso 8859 1 和 utf 8 ISO 8859 1 不起作用的查询看起来像 area sk ne 使用 Z
  • (PHP):使用 Zend_Test_PHPUnit_DatabaseTestCase 测试模型

    当我运行 PHP 单元测试时 我得到 1 Test Model Mapper TestTest testTest Argument 1 passed to PHPUnit Extensions Database DataSet Defaul
  • 在 Google Analytics 中准确报告通过 PayPal 进行的付款的推荐人

    在我们的 Google Analytics 电子商务中 PayPal 被视为推荐人 我发现许多文章概述了 utmnooveride 的使用 以确保 PayPal 交易传递数据 以便原始推荐人获得信用 我们使用 PayPal 处理我们的信用卡
  • Zend url:获取参数始终保留在 url 中

    我在使用带有 get 参数的 Zend url 帮助器时遇到一些问题 在一个视图中 我有分页 它在 get 中发送额外的参数 所以在 url 中 所以没关系 但这是不行的 即使我更改页面 参数也始终保留在 url 中 事实上 zend ur
  • (Zend Framework > Zend_Config) 如何避免使用 .ini 或 .xml 配置?

    我认为对于高流量项目来说使用 ini 或 xml 文件不是一个好主意 因为每个页面加载都会导致解析 config ini 或 xml 文件 有什么方法可以用常规 php 数组替换使用 ini xml 作为配置吗 现在 php ini 看起来
  • 如何使用 zend 导入 CSV

    如何使用 zend 框架导入 CSV 文件 我应该使用 zend file transfer 还是有任何我必须研究的特殊类 另外 如果我使用 zend file transfer 是否有任何特殊的 CSV 验证器 你不必使用任何 zend
  • Zend 如何使用 mod_rewrite 解析前端控制器中的 URL?

    我不明白 Zend Framework 如何控制路由 我实际上正在尝试创建自己的控制器 路由类 编写了与 Zend 建议的 htaccess 相同的代码 以重写位于网站根目录的index php RewriteEngine On Rewri
  • zend 表单验证

    我想知道 Zend Form 如何验证输入 我的意思是它如何知道要验证哪些输入字段 我查看了 php 全局变量 POST GET 但没有看到任何设置为标识符 例如 的内容 以便了解如何验证 有人能给我推荐一些关于这些东西的指南吗 好吧 找出
  • 如何使用tablegateway连接表

    使用tableadapter时如何连接zend3中的表 问题不在于一般如何连接表 而在于如何在 zend 中执行此操作以及在何处放置代码 假设我有一个 table 类 namespace Import Model use RuntimeEx
  • 用于 Eclipse PDT 的 Zend 框架插件

    我安装了 eclipse PDT IDE 版本 1 2 0 我将它与 Dojo 一起使用来开发非常有趣的 Ajax 应用程序 现在我想在我的 eclipse IDE 中启用 Zend 框架 我怎样才能做到这一点 经过一番谷歌搜索后 我尝试了
  • 如何在 Zend 中使用 cookie?

    如何使用 Zend Http Cookie 来设置和读取 cookie 我尝试像这样设置cookie cookie new Zend Http Cookie TestCookie TestValue localhost com 但没有生成c
  • 表单未将帖子值绑定到实体

    我有一个学说实体 一个表单和 2 个字段集 当我用值填充实体时 值会按预期合并到表单中 当我尝试从表单数据创建实体时 它保持为空 我一定是忘记了什么 但就是找不到它 我还有其他几种没有字段集的表单 它们按预期工作 有任何想法吗 下面发布了我

随机推荐

  • 什么时候使用嵌套类?

    下面的代码将找到两条线的交点并返回点对象 如果 point 只能由 IntersectionOf2Lines 类创建 我应该将 point 设为嵌套类吗 如果不是那么为什么不呢 谢谢 class Point private final in
  • rlang 包中的 sym() 和 parse_expr() 有什么区别?

    使用 rlang 包 我想知道有什么区别sym and parse expr 例如考虑以下表达式 ex1 sym a ex2 parse expr a 他们双双回归 a identical ex1 ex2 1 TRUE 假设现在我需要一个报
  • IE9边框半径和背景渐变出血

    IE9 显然能够通过使用 CSS3 标准定义来处理圆角border radius 对边界半径的支持怎么样and背景渐变 是的 IE9 是分别支持它们的 但是如果你混合使用两者 渐变就会从圆角溢出 我还看到了奇怪的现象 阴影在圆角的盒子下显示
  • 仅 Azure 上出现错误 -“Microsoft.ACE.OleDb.12.0”提供程序未在本地计算机上注册

    我正在 Azure 环境中构建的 Web 应用程序中使用 MS Excel 文件 当我尝试访问开发结构上的 Excel 文件时 我从未遇到以下错误 但是 当我部署到云中的 Azure 后 我收到此错误消息 Microsoft ACE Ole
  • 如何使用 6 组绘制维恩图

    我有一个包含 6 个元素的数据集 我想画一个维恩图 但使用 R 维恩图库 它仅限于 5 个元素 你知道如何画六组维恩图吗 也许用蟒蛇 我的数据示例 Ath Fve Mdm Pcmm Pper Pmum Counts 1 0 0 0 0 0
  • 基于作为输入传入的多列的顺序

    我想编写一个函数 通过任意数量的列对给定的 data frame 我将其称为 dataSet 进行排序 其名称也传递到函数中 在我将其称为 orderList 的向量中 我知道要按单个传入的字符串进行排序 您可以使用 sortDataset
  • 格式化文本输出 Java SE

    我正在尝试打印一些 ASCII 艺术作品系统输出打印文件在爪哇 当我这样做时 源代码中的所有间距都会消失 打印出来的都是一堆乱七八糟的东西 没有任何意义 图 1 显示了源代码的外观以及 ASCII 艺术的外观 图 2 显示了程序运行时横幅的
  • 使用 spring-ws 客户端时 Jboss 中的 Spring 类加载器问题

    我的应用程序在 Jboss 中正常运行 为了编写 spring webservice 客户端 我使用生成了类wsimport 我在配置中写了以下内容
  • .MySQLNonTransientConnectionException:无法创建与数据库服务器的连接

    以下代码出现错误 package jdbcdrive import java sql public class Lpt param args throws SQLException public static void main Strin
  • 如何在 __main__.py 中处理 python3 多处理

    Il 提出的问题 我不明白问题的真正原因 这似乎与我在子进程之一中使用烧瓶有关 请忽略此内容 由于赏金而无法删除 本质上 当将 python 库作为模块运行时 我必须启动一些进程和 或池 然而 自从 name main 总是正确的 main
  • 初始化脚本

    我需要学习如何初始化脚本 我用谷歌搜索了一下 但不太明白 现在我有一个位于 div 中的切换脚本 整个 div 被加载到另一个页面 切换脚本可以工作 但在加载时不起作用 class click function this toggleCla
  • 文件未找到异常 Jasperreports

    我正在 netbeans 中加载 jrxml 文件 该文件已成功加载 但是当我将其部署为 jar 文件时 出现以下错误 Error net sf jasperreports engine JRException java io FileNo
  • 如何仅为元素的背景提供跨浏览器透明度?

    如何只为背景提供跨浏览器透明度 我想给背景提供透明度ul background 只是不想在里面制作文字ul li a 透明的 ul filter alpha opacity 50 internet explorer khtml opacit
  • 搜索单词,并使用 fileinput 在 Python 文件中替换包含该单词的整行

    我想在文本文件中搜索特定单词 对于存在该单词的每一行 我想用新文本完全更改该行 我想使用来实现这个fileinputpython 的模块 我看到有两个观察结果 有以下变化 代码段 1 text mov9 if any line contai
  • 我们可以将代表保存在文件中吗(C#)

    我的班级有一名代表成员 我可以为该类的每个实例化对象设置委托 但尚未找到任何方法来保存该对象 这是一件相当冒险的事情 虽然您确实可以像任何其他对象一样序列化和反序列化委托 但委托是指向序列化它的程序内的方法的指针 如果您在另一个程序中反序列
  • JasperReports 与 Maven 和 Eclipse 示例

    我想要的只是使用 JasperReport Maven Eclipse 生成一个简单的 pdf 报告 我浏览一个简单的例子已经有一段时间了 但没有找到 JasperReport网站似乎没有任何关于Maven的教程 Maven 2 Jaspe
  • 在Python中使用字符串作为注释

    我目前正在阅读使用字符串作为注释的 python 代码 例如 这是一个函数 def xyz x This is a function that does a thing Pretty cool right return 0 使用字符串作为注
  • VBA/Excel 中行和列范围偏移的最大值是多少?

    我正在使用 microsoft excel 2003 执行以下 If 语句时收到 应用程序定义或对象定义错误 如果 Range MyData CurrentRegion Offset i 0 Resize 1 1 Value Range M
  • 获取 macOS 上的 CPU 使用百分比

    我是 Objective C 的初学者 我决定尝试编写一些简单的应用程序 所以我尝试制作一个可以测量 CPU 使用率等的应用程序 有没有一种简单的方法可以在 Cocoa 应用程序中使用 Objective C 获取 CPU 使用百分比等信息
  • 理解 zend 中的网格布局

    我对 zend 中的表单设计有点困惑 我知道我的表单类中有字段 并且外观应该在视图中完成 在几乎是纯 html 的索引视图中 我没有问题 但在显示我的表单的添加和编辑视图中 我在更改外观时遇到问题 我有一个如下的视图脚本 h1 h1