CakePHP 空选择保存

Posted

技术标签:

【中文标题】CakePHP 空选择保存【英文标题】:CakePHP Empty Selects Save 【发布时间】:2016-07-29 12:59:10 【问题描述】:

使用 Cake v2.x 我有一个用于我的 add 方法的表单,它提供四个 html 选择输入。选择是可选的,如果用户进行选择并保存我要保存的数组的格式如下:

array(
    'AttributeProductVariation' => array(
        'product_id' => '26',
        'sku' => 'xxxxxx',
        'stock_level' => '10',
        'id' => ''
    ),
    'AttributeVariation' => array(
        (int) 1 => array(
            'variation_id' => '1'
        ),
        (int) 2 => array(
            'variation_id' => ''
        ),
        (int) 4 => array(
            'variation_id' => ''
        ),
        (int) 7 => array(
            'variation_id' => ''
        )
    )
)

问题是值保存在 AttributeVariation 表中,其中 3 个选择为空,variation_id = 0。在这种情况下,我需要忽略并且不保存这些选项。

我的formhelper如下:

$this->Form->input('AttributeVariation.'.($key).'.variation_id', [  
     'label' =>  $attributes[$key],                       
     'required' => false,
     'options' => $variations[$key],
     'empty' => 'Select an Attribute if required',
]);

我保存如下:

$this->AttributeProductVariation->saveAll($this->request->data)

我当然可以在保存之前查找空选择并从数组中删除它们,但这些看起来像是一个 hack?我确定框架可以开箱即用地处理这个问题?

【问题讨论】:

可以检查variation_id不为空 【参考方案1】:

您可以使用数据验证:

http://book.cakephp.org/2.0/en/models/data-validation.html

public $validate = array(
    'variation_id' => array(
        'notempty' => array( 
            'rule => array('notempty') 
        )
    )
)

【讨论】:

以上是关于CakePHP 空选择保存的主要内容,如果未能解决你的问题,请参考以下文章

Cakephp:选择登录后要保存的数据

Cakephp - 条件保存

cakephp 模型保存浮点值的问题

Cakephp 多个输入字段

Cakephp 中的脚手架允许选择 Parent_id,但烘焙控制器显示一个空的选择框

Cakephp 3.5 多次保存相同的记录