Zend_Form_Element_MultiCheckbox:如何将一长串复选框显示为列?

2024-03-31

所以我正在使用Zend_Form_Element_MultiCheckbox显示一长串复选框。如果我简单地echo元素,我得到很多由分隔的复选框<br />标签。我想找出一种方法来利用简单性Zend_Form_Element_MultiCheckbox但也显示为多列(即 10 个复选框<div style="float:left">)。如果我有一组单个复选框元素,我可以手动执行此操作,但这不是最干净的解决方案:

<?php
    if (count($checkboxes) > 5) {
        $columns = array_chunk($checkboxes, count($checkboxes) / 2); //two columns
    } else {
        $columns = array($checkboxes);
    }
?>

<div id="checkboxes">
    <?php foreach ($columns as $columnOfCheckboxes): ?>

        <div style="float:left;">

            <?php foreach($columnOfCheckboxes as $checkbox): ?>
                <?php echo $checkbox ?> <?php echo $checkbox->getLabel() ?><br />
            <?php endforeach; ?>

        </div>

    <?php endforeach; ?>
</div>

我怎样才能做同样的事情并且仍然使用Zend_Form_Element_MultiCheckbox?


执行此操作的最佳位置是使用视图助手。这是我很快想到的你可以做的事情。您可以在视图脚本中使用它,将其附加到 Zend_Form_Element。

我假设您知道如何使用自定义视图助手以及如何将它们添加到表单元素中。

class My_View_Helper_FormMultiCheckbox extends Zend_View_Helper_FormMultiCheckbox
{
    public function formMultiCheckbox($name, $value = null, $attribs = null,
        $options = null, $listsep = "<br />\n")
    {
        // zend_form_element attrib has higher precedence 
        if (isset($attribs['listsep'])) {
            $listsep = $attribs['listsep'];
        }

        // Store original separator for later if changed
        $origSep = $listsep;

        // Don't allow whitespace as a seperator 
        $listsep = trim($listsep);

        // Force a separator if empty
        if (empty($listsep)) {
            $listsep = $attribs['listsep'] = "<br />\n";
        }

        $string  = $this->formRadio($name, $value, $attribs, $options, $listsep);
        $checkboxes = explode($listsep, $string);

        $html = '';
        // Your code
        if (count($checkboxes) > 5) {
            $columns = array_chunk($checkboxes, count($checkboxes) / 2); //two columns
        } else {
            $columns = array($checkboxes);
        }

        foreach ($columns as $columnOfCheckboxes) {
            $html .= '<div style="float:left;">';

            $html .= implode($origSep, $columnOfCheckboxes);

            $html .= '</div>';
        }

        return $html;
    }
}

如果您需要进一步的解释,请告诉我。我很快就做到了。

EDIT

我将其命名为相同并放置在不同的目录中的原因只是为了覆盖 Zend 的视图助手。通过将其命名为相同并添加我的辅助路径:

$view->addHelperPath('My/View/Helper',  'My_View_Helper');

我的自定义视图助手的优先级高于 Zend 的助手。这样做使我能够在不更改使用 Zend 助手的任何表单、元素或视图的情况下进行测试。基本上,这就是用您自己的视图助手替换 Zend 的视图助手之一的方法。

我提到有关添加自定义视图助手和添加到表单元素的注释的唯一原因是因为我假设您可能会重命名助手以更好地满足您的需求。

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

Zend_Form_Element_MultiCheckbox:如何将一长串复选框显示为列? 的相关文章

  • 正确使用 zend 框架中的语言

    我有一个带有两个模块 管理和公共 的 Zend 应用程序 对于公共 我有以下插件来解析我的友好 URL class Custom Controller Plugin Initializer extends Zend Controller P
  • file_get_contents:无法设置本地证书链文件

    我们使用 Composer 来升级 Satis 的依赖项 最近的服务器升级后 我们无法这样做 缩小可能的原因后 我们发现 file get contents php 函数在尝试建立 ssl 连接时失败 我们使用以下脚本来测试我们的 ssl
  • 卸载 Magento 自定义扩展及其数据库

    我创建了一个扩展并创建了扩展的 zip 文件 以便我可以通过 Magento Connect 安装它 当我使用 Magento Connect 卸载自定义扩展时 它只会删除我的扩展文件和文件夹 但不会删除我的扩展的数据库表 我还想删除我的数
  • zend框架FlashMessenger问题

    我正在使用 FlashMessenger 助手来设置消息 但无法使用 getMessages 方法检索消息 它返回 null 这是我的示例代码
  • Zend Framework 路由:.html 扩展名

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

    如何使用 zend 框架导入 CSV 文件 我应该使用 zend file transfer 还是有任何我必须研究的特殊类 另外 如果我使用 zend file transfer 是否有任何特殊的 CSV 验证器 你不必使用任何 zend
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 如何在 Zend Framework 中处理移动设备?

    我接手了一个噩梦般的项目 我正在迁移一个写得很差的站点 并慢慢地将其迁移到 Zend Framework 应用程序中 不幸的是 我没有时间做补救工作 使这变得可以忍受 也许是一个或两个模型 我现在被告知该网站很快就会有移动版本 建议是克隆旧
  • 无法在 Zend Framework 中回滚事务

    我在 Zend Framework 中使用以下代码进行事务 但回滚功能不起作用 数据通过 insertSome data 插入数据库 怎么了 db gt beginTransaction try model gt insertSome da
  • Zend Framework 中的动态默认模块

    有谁知道在 Zend Framework 中动态设置默认模块并且不会遇到命名空间问题的方法 例如 我想要做的是有一个允许加载的模块表 其中一个设置为默认模块 例如 我可能有 admin blog calendar 作为可以加载的模块 如果我
  • 将变量发送到 Zend Framework 中的布局

    在我的项目中 我有许多动态元素 它们在每个页面上都是一致的 我已将这些放入我的layout phtml中 我的问题是 如何从控制器将变量发送到布局中 如果我想从我的控制器发送东西 我可以使用 this gt view gt whatever
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • Zend 1.11 和 Doctrine 2 自动从现有数据库生成所需的一切

    我是 ORM 新手 我真的很想学习它 我按照本教程成功地使用 Zend 1 11 x 安装了 Doctrine 2 1 的所有类和配置 http www zendcasts com unit testing doctrine 2 entit
  • 如何开始 Zend Framework 开发

    Hai 首先谢谢 我下载了 Zend 框架 C wamp zend 我将 php ini 的包含路径更改为 C wamp zend 我在我的 php 信息中看到了这个 我认为包含路径是正确的 我仍然有很多疑问 我从哪里开始在 zend 框架
  • php 发送带有图像的电子邮件

    我正在尝试发送一封带有图片的电子邮件 我的电子邮件正文是 当我收到电子邮件时 我看不到图片 相反 我 看 img src http planet earth bogus us icons secret pictures gif 我知道这是因
  • Zend Framework 2相册教程发生404错误请求的URL无法通过路由MAMP OSX匹配

    刚刚也在 IRC 频道 ZFTalk 上发布了这个 希望我能得到一些关于 ZF2 ZF2 专辑教程 使用 MAMP 的 OSX 的帮助 骨架框架 主页正在运行 问题 完成第 8 5 节 列出专辑 后 您用一些代码填充 module Albu
  • 使用 Zend 实现 WURFL 时出现错误

    我环顾四周 似乎找不到与我有同样问题的人 希望我没有错过这里的叮当声 我想要获取每个用户的设备浏览器信息 我目前计划在引导程序中执行此操作 遵循我在 PHP 会议上看到的内容 为此我遇到了 http framework zend com m
  • MVC:如何使用ajax?

    我将使用 Zend Framework MVC 实现启动一个项目 我如何使用ajax 我的意思是 我应该将所有 ajax 代码放入控制器中吗 还是进入视野 例如 我想将作者 ivan 的帖子显示在页面上 通常 我创建一个指向 posts a
  • Magento - 检查 cms 页面

    我想通过 php 检查页面是否是 Magento 中的 cms page 我需要不同的 cms 页面面包屑 所以我尝试在一个条件下做到这一点 但我不知道如何或在哪里查看 到目前为止 这是我的 breadcrumbs phtml p some
  • [zend][db] 具有多个变量的 fetchAll

    我试图在有 2 个变量的查询上使用 fetchAll 我无法弄清楚语法 我只能用 1 个变量进行管理 sql SELECT FROM mytable WHERE field1 this gt db gt fetchAll sql value

随机推荐

  • Ember.js - jQuery-masonry + 无限滚动

    我正在尝试在我的 ember 项目中实现无限滚动和砌体工作 砖石 砖块 是带有文字和图像的柱子 目前 我可以在页面初始加载时显示第一页并应用砌体 不过 我仍然需要执行 setTimeout 试图找出如何摆脱它 我还有基本的无限滚动代码 现在
  • 使用 Web 部署发布 ASP.NET MVC2 站点

    我目前使用 Web 部署 http learn iis net page aspx 346 web deploy http learn iis net page aspx 346 web deploy 发布我的 MVC2 应用程序 它曾经工
  • file_get_contents() 修改后的 HTTP 标头返回垃圾 html 输出

    以下代码用于使用 PHP 的 SIMPLETHTMLDOM 解析器提取 html include simple html dom php context stream context create array http gt array m
  • 在SAX解析期间确定根元素

    我正在使用 SAX 来解析 XML 文件 假设我希望我的应用程序only处理带有根元素 animalList 的 XML 文件 如果根节点是其他节点 SAX 解析器应该终止解析 使用 DOM 你可以这样做 Element rootEleme
  • 在 Flutter 中使用 After Effects 文件

    我知道如何导出Rive在 Flutter 应用程序中使用的 Flare 文件 但我怎样才能import Adobe 后遗症文件到 Rive 我知道可以这样做Lottie但我无法弄清楚如何准确地做到这一点 您可以轻松导入 bodymovin
  • 如何使用 Jest 和 vue/test-utils 测试输入文件

    我想使用 Jest 和 vue test utils 测试文件上传器组件 我有这个 describe show progress bar of uploading file gt const wrapper mount FileUpload
  • 如何在 lldb 中创建和使用临时 NSRange?

    NSRange 只是一个 C 结构体 我想在 Xcode 的 lldb 中的断点处创建一个临时的 专门用于 NSArray 方法objectAtIndex inRange 这是行不通的 lldb expr NSRange tmpRange
  • 高效更新 Bokeh 中的图像图以实现交互式可视化

    我正在尝试使用 Bokeh 创建多维数组的不同切片的平滑交互式可视化 切片中的数据根据 用户交互而变化 因此每秒必须更新几次 我编写了一个 Bokeh 应用程序 其中包含几个小图像图 64x64 值 来显示切片的内容 以及在用户与应用程序交
  • 根据年份合并 data.frames 并填写缺失值

    我有两个 data frames 我想将它们合并在一起 第一个是 datess lt seq as Date 2005 01 01 as Date 2009 12 31 days sample lt data frame matrix nc
  • JavaFX:如何在不关注主窗口的情况下关闭子窗口

    我试图在一定时间后以编程方式关闭子窗口 这个子窗口的initOwner是与主舞台一起设置的 但是关闭这个子窗口后 主窗口就会获得焦点 有什么方法可以在不关注主窗口的情况下关闭子窗口 以编程方式 下面是我的问题的快速演示 我尝试了所有可能的方
  • OSX 上“没有名为 _scproxy 的模块”

    我使用的是预装 python 2 6 的 OSX 10 6 并且想通过 easy install 或 setup py 在下载的包中 安装 python 包 就我而言 我正在尝试安装 MySQLdb 在这两种情况下 我都会得到一个堆栈跟踪
  • 在处理其他事情时如何将一堆未提交的更改放在一边

    如果我有一堆未提交的更改 并且想在处理其他事情时将其放在一边 然后稍后 例如几天后 返回并继续工作 完成此任务最简单的工作流程是什么 到目前为止我只体验过 Mercurial 的基本功能 我通常的方法是使用克隆创建一个新分支 但可能有更好的
  • 自动布局问题 Xcode 8 [_SwiftValue nsli_superitem]

    将我的代码转换为 Swift 3 我发现了一个奇怪的问题 现在 2016 年 9 月 15 日 Xcode 8 公共版本 已经发布 转换代码后 我的应用程序崩溃了 没有明显的原因 自动布局有问题 日志显示如下 SwiftValue nsli
  • Android,在库项目中提供应用程序特定常量的最佳方式?

    我正在为许多 Android 应用程序创建一个库项目 这些应用程序都具有一些我希望包含在库项目中的通用功能 但库项目功能需要使用特定于应用程序的常量 所以我正在寻找一种方法来为库函数提供常量名称并允许每个应用程序定义它们 特定应用程序常量的
  • data.table 中的 Between 与 inrange

    In R s data table 什么时候应该选择 between and inrange 用于子集化操作 我已阅读帮助页面 between我仍然对这些差异感到摸不着头脑 library data table X data table a
  • 屏幕阅读器何时应该可以使用“隐藏”元素(为了可访问性,a11y)?

    我听到建议 hidden类不作为 hidden display none 但将其宽度和高度设置为 1 并使用剪切等 使元素看起来仍然存在于屏幕上 但内容不可见 但是 当我们使用 JavaScript 隐藏某些内容时 该元素的目的就已经完成
  • 查找 JUnit TestCase 中测试方法的数量

    有没有办法知道测试用例中测试方法的数量 我想做的是有一个测试用例来测试几种场景 对于所有这些我只会执行一次 data setUp 同样 我想在所有测试方法结束时进行一次清理 tearDown 我当前使用的方法是维护一个计数器来记录文件中存在
  • Angular 2 - 如何在组件中包含 javascript?

    我对 Angular 完全陌生 直接开始使用 Angular 2 Angular 的一大优点是我可以模块化网页的每个功能 组件有自己的 html 和样式表 但是他们自己的 javascript 文件呢 我怎样才能包含它自己的特定 javas
  • 使用 powershell 获取家庭网络上的设备名称及其 IP 地址

    这个问题是由于尝试管理我的家庭 WiFi 网络而产生的 我一直在尝试 get netipaddress ipconfig 和 nslookup exe 等命令 以下命令有点引导我到某个地方 但它没有我正在寻找的信息 Get NetIPAdd
  • Zend_Form_Element_MultiCheckbox:如何将一长串复选框显示为列?

    所以我正在使用Zend Form Element MultiCheckbox显示一长串复选框 如果我简单地echo元素 我得到很多由分隔的复选框 br 标签 我想找出一种方法来利用简单性Zend Form Element MultiChec