DavidYell/listing

此包已被弃用且不再维护。没有建议的替代包。
此包的最新版本(0.1.4.1)没有可用的许可信息。

将字段追加到选择框列表中的模型行为。这种行为的想法是,如果您有一个属于另一个模型的项的列表,它将包括该模型名称。

安装: 256

依赖项: 0

建议者: 0

安全: 0

星星: 8

关注者: 2

分支: 1

开放性问题: 0

类型:cakephp-plugin

0.1.4.1 2014-09-01 10:46 UTC

This package is auto-updated.

Last update: 2024-01-13 01:11:43 UTC


README

#CakePHP-Listing 将模型行为追加到选择框列表中的 optgroup。这种行为的想法是,如果您有一个属于另一个模型的项的列表,它将包括该模型名称。因此,如果您正在通过关系查找特定项,这将使其变得更容易。我已为插件创建了一个网站,其中包含更多详细信息。http://jedistirfry.co.uk/CakePHP-Listing/

因此我们将其更改为:

array(
    1 => 'First',
    2 => 'Second'
);

..到这个..

array(
    'Cats' => array(
        1 => 'First',
    ),
    'Dogs' => array(
        2 => 'Second'
    )
);

..并且您应该在选择框中获得漂亮的选择组。
Select box with optgroup

它也支持多选。
Multi select box with optgroup

##版本 这可以被视为 beta 版本。
我为这段代码创建了测试,并且它达到了 96.88%。
Build Status

##安装 这是一个标准的 CakePHP 插件,因此需要将其提取到或子模块化到您的 app/Plugin 文件夹中。我称它为 Listing,因此它应该位于 app/Plugin/Listing

您需要使用 CakePlugin::load('Listing') 在您的 app/Config/bootstrap.php 中激活插件,除非您已经使用 CakePlugin::loadAll()

##要求

  • Cake 2
  • Containable

您使用此行为时使用的模型必须启用 Containable。 public $actsAs = array('Containable', 'Listing.Listable'); 我倾向于将 Containable 添加到我的 AppModel 中,因为它在任何地方都很方便!

##用法 您可以使用 $actsAs 数组将模型附加到。就像您通常做的那样。您 必须 在配置行为时包括要连接的相关模型名称。

这通常是关系中的父模型,因为行为将附加到子模型。因此,如果您想通过 Provider 列出 Broadband,则将行为附加到 Broadband 模型,并将 relatedModelName 配置为 Provider

###配置

您还可以使用 primaryKeydisplayField 指定您想要使用的字段。

public $actsAs = array(
    'Listing.Listable' => array(
       'relatedModelName' => 'Provider', // Example - this should be the parent model, the one you want to group by
       'relatedModelPrimaryKey' => 'id', // optional - default shown
       'relatedModelDisplayField' => 'name', // optional - default shown
    )
);

关于行为的更多信息请参阅书籍.

###获取列表 然后为了附加额外的模型,我实现了一个名为 listing 的自定义查找,它将返回格式化的列表。

例如,$broadbands = $this->Broadband->find('listing');

###自定义列表 最简单的方法是通过使用模型的 $virtualFields 属性创建新字段,然后将它们传递给查找来自定义列表的显示。让我们看看一个例子。

我们想要按角色分组列出所有用户。然而,我们的数据库既有 first_name 也有 last_name,但我们想显示用户的完整名称列表。我们可以创建一个虚拟字段并选择它。

<?php
// app/Model/User.php
public $virtualFields = [
    'full_name' => 'CONCAT(User.first_name, ' ', User.last_name)'
];

// app/Controller/UsersController.php
$users = $this->User->find('listing', ['fields' => ['id', 'full_name']]);

##待办事项 ###Alpha

  • 编写一些测试
  • 稍微整理一下源代码
  • 考虑重构
  • 重写这个 README 文件!

###Beta

  • 移除对Containble的依赖
  • 如果模型不相关,则抛出异常

##许可证 MIT许可证 (MIT)

版权所有 (c) 2013 David Yell

特此授予任何人获得此软件及其相关文档副本(以下简称“软件”)的权利,免费使用该软件,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向获得软件的人提供使用该软件的权利,但需遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他原因而产生的,与软件或软件的使用或其他交易有关。