PHP:使用已编辑的行更新JS文件

时间:2017-04-23 10:26:11

标签: javascript php angularjs

我有以下名为

的AngularJS文件
  

productFactory.js

列出了产品及其详细信息,我想更新其中一个产品。

"use strict"; 

var productFactory = angular.module('productFactory', []);

productFactory.factory('productFactory', function () {

var productFactory = {};

productFactory.products = [
    {
        productId: 1,
        name: "Product1",
        category: "Urban",
        desc: "Lorem Ipsum",
        image: "placeholder1.png;placeholder2.png;placeholder3.png",
        price: 30,
        qty: 6,
        variation: ""
    },
    {
        productId: 2,
        name: "Product2",
        category: "Street Wear",
        desc: "Lorem Ipsum",
        image: "placeholder1.png;placeholder2.png;placeholder3.png",
        price: 40,
        qty: 10,
        variation: "6,7,8,9,10,11,12"
    }
];

return productFactory;
});

在PHP中,我可以运行此脚本来写入文件

<?php
$script="SOME_CONTENT";
$fileName="productFactory.js";
file_put_contents($fileName, $script);
?>

如何通过'productId'更新其中一个产品?

1 个答案:

答案 0 :(得分:1)

最好的方法是将产品存储在某个数据库中(它可能是productFactory.products变量中的简单JSON文件。

如果它们存储在JSON中,您可以在PHP中加载文件,将其解析为具有json_decode($str);的对象,然后在该对象中编辑您想要的内容,然后将其转换回JSON字符串( json_encode($obj);)。

如果将它们存储在像MySQL这样的数据库中,我认为PHP处理会更简单(只需为给定的产品ID调用UPDATE查询)。

用于处理编辑请求的PHP示例:

$path = "/path/to/products.json";
$data = file_get_contents($path);
$json = json_decode($string);

foreach ($json as & $product) {
    // process only correct product
    if ($product->productId !== $_POST['productId']) {
        continue;
    }

    foreach ($_POST as $key => & $value) {
        // here should be some data validation probably
        if (isset($product[$key]) {
            $product[$key] = $value;
        }
    }
}

$newData = json_encode($json);
file_put_contents($path, $newData);