Проблемы с хранением контента из формы через CMS - PullRequest
1 голос
/ 03 июля 2010

У меня есть таблица MySQL под названием sales, содержащая поля product, количество и оплаченные.

Я использую систему, подобную CMS, в которой есть собственный способ создания форм и настраиваемые поля форм для использования.

Насколько я могу судить, идентификатор, заданный для поля формы, - это то, что используется в качестве имени таблицы для вставки.

Моя текущая форма, которую я использую, выглядит следующим образом:

<?php

    include("../../include/session.php");
    include("include/tables.php");
    include("include/fields.php");

    //if you need to ovveride the phpbmsTable class make sure to include the modules file
    include("include/sales.php");

    if(!isset($_GET["backurl"]))
        $backurl = NULL;
    else{
        $backurl = $_GET["backurl"];
        if(isset($_GET["refid"]))
            $backurl .= "?refid=".$_GET["refid"];
    }

    $thetable = new sales($db, "tbld:490cf2d1-1c72-7b99-461d-b1b8e68553c4");
    $therecord = $thetable->processAddEditPage();

    if(isset($therecord["phpbmsStatus"]))
        $statusmessage = $therecord["phpbmsStatus"];

    $pageTitle = "Sales";


    $phpbms->cssIncludes[] = "pages/menus.css";
    $phpbms->jsIncludes[] = "modules/base/javascript/menu.js";

        $theform = new phpbmsForm();

        $theinput = new inputSmartSearch($db, "product", "Choose Product",$therecord["product"], "Choose Product", TRUE, NULL, NULL, TRUE, $required=true);
        $theinput->setAttribute("class","important");
        $theform->addField($theinput);

        $theinput = new inputField("quantity",$therecord["quantity"],"Quantity",true, NULL, 1);
        $theinput->setAttribute("class","important");
        $theform->addField($theinput);

        $theinput = new inputCheckbox("paid", $therecord["paid"], "Paid");
        $theform->addField($theinput);

        $thetable->getCustomFieldInfo();
        $theform->prepCustomFields($db, $thetable->customFieldsQueryResult, $therecord);
        $theform->jsMerge();

    include("header.php");

?><div class="bodyline">

    <?php $theform->startForm($pageTitle)?>

    <div id="leftSideDiv">
        <fieldset>
            <legend><label for="S">Sales</label></legend>

            <p class="big"><?php $theform->showField("product"); ?></p>
            <p class="big"><?php $theform->showField("quantity"); ?></p>
            <p class="big"><?php $theform->showField("paid"); ?></p>

        </fieldset>
    </div>
    <?php

        $theform->showGeneralInfo($phpbms,$therecord);
        $theform->endForm();
    ?>
</div>
<?php include("footer.php");?>

Содержимое количества и оплачено хранятся в таблице без проблем, однако продукт не, насколько я могу судить, потому что в некоторый момент перед идентификатором добавляется ds-. Я полагаю, это потому, что я использую другое поле ввода (которое мне нужно использовать).

Это результат POST после попытки сохранить форму:

Array ([product] => 75c72a6a-83d9-11df-951a-fa9c1ec271f2 [ds-product] => Corona [количество] => 2 [оплачено] => 0 [madeby] => [creationdate] => [ команда] => сохранить [updatedby] => [cancelclick] => 0 [modifydate] => [uuid] =>: 4402add3-b884-43e6-04ad-c76d92ee465b [id] =>)

Вместо этого UUID вставляется в продукт, а не в название продукта.

Интересно, есть ли какое-нибудь решение для этого? Я не думаю, что у меня есть прямой доступ для изменения кода запроса, и я не могу переименовать продукт в ds-product, потому что я не могу изменить запрос для доступа к имени поля с дефисами.

Существует возможность переопределения классов, как указано выше. Я включил sales.php, который основан на примере здесь .

Является ли решение как-то переопределить функцию insertRecord, и если да, то как? Или есть более простое решение?

1 Ответ

0 голосов
/ 04 июля 2010

Вы можете изменить значения элементов в массиве, чтобы вы всегда могли перезаписать элемент продукта на значение, которое вы хотите ввести в поле.Хотя я бы сказал, что если поле ожидает значение id в том виде, в каком оно кажется, и вы указали строку, это не будет работать очень хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...