Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ZF2-仅编辑数据的一部分_Php_Zend Framework2_Editing - Fatal编程技术网

Php ZF2-仅编辑数据的一部分

Php ZF2-仅编辑数据的一部分,php,zend-framework2,editing,Php,Zend Framework2,Editing,我有一个包含许多字段(id、标签、引用、密钥产品等)的产品表,密钥产品是一个加密值 我在产品模型中的exchangeArray功能是正常的,但对于key_产品,我非常喜欢: public function exchangeArray($data){ $this->key_product = (isset($data['key_product'])) ? sh1($data['key_product']) : $this->key_product;

我有一个包含许多字段(id、标签、引用、密钥产品等)的产品表,密钥产品是一个加密值

我在产品模型中的exchangeArray功能是正常的,但对于key_产品,我非常喜欢:

    public function exchangeArray($data){        
    $this->key_product = (isset($data['key_product'])) ? sh1($data['key_product']) : $this->key_product;
   }
在编辑我的产品数据时,我会将键显示为空,因此如果用户输入值,它将存储在数据库中。我的问题是,当用户不输入值时,我希望将旧值保留在数据库中,但当我对数据进行加密并使用exchangeArray函数时,它总是对密钥产品值进行加密,因此我发现我自己使用相同的值加密了两次

我的问题是,如果没有输入密钥产品,如何在不编辑密钥产品字段的情况下编辑产品数据。 欢迎提出任何建议。
谢谢

您好,我想您可以在productTable中执行此操作

public function updateProduct(Product $product)
{
    $data = array (
        'id' => $product->id,
        'label' => $product->label,
        'reference' => $product->reference,
        //... other 
    );

    if($product->key_product != null) {
        $data['key_product'] = $product->key_product;
    }
    //else key_product w'll not be changed

    $id = (int) $product->id;
    $this->tableGateway->update($data, array('id' => $id));
}
你的交流方式会变成这样:

public function exchangeArray($data) 
{        
    $this->key_product = (isset($data['key_product'])) ? sh1($data['key_product']) : null;
}