DavidYell / listing
将字段追加到选择框列表中的模型行为。这种行为的想法是,如果您有一个属于另一个模型的项的列表,它将包括该模型名称。
Requires
- composer/installers: ~1.0
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' ) );
##版本 这可以被视为 beta
版本。
我为这段代码创建了测试,并且它达到了 96.88%。
##安装 这是一个标准的 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
。
###配置
您还可以使用 primaryKey
和 displayField
指定您想要使用的字段。
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
特此授予任何人获得此软件及其相关文档副本(以下简称“软件”)的权利,免费使用该软件,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向获得软件的人提供使用该软件的权利,但需遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他原因而产生的,与软件或软件的使用或其他交易有关。