0

我们正在使用 Aheadworks 帮助台模块,并正在尝试创建第二个表单来捕获特定信息并使用该表单创建一个工单,其中所有表单内容都会发布到帮助台的“内容”部分。

问题是,如果我使用名称 =“内容”,则发布到“内容”部分的内容只是“数组”

表单代码很简单:

<form id="helpdesk-ticket-form" action="../helpdeskultimate/customer/new/" method="post" enctype="multipart/form-data"><input name="title" value="WHOLESALE SETUP REQUEST" type="hidden">
<div><label for="title_field">Name<span class="required">*</span></label><br> <input id="title" class="input-text required-entry" style="width: 250px;" name="" value="" type="text"></div>
<div>&nbsp;</div>
<div><label for="title_field">Company Name<span class="required">*</span></label>    <br><input id="content_field" class="input-text " title="Company" name="content" value="" type="text"></div>
<input name="department_id" value="2" type="hidden">
<div>&nbsp;</div>
<div><label for="content_field">Message<span class="required">*</span></label><br>     <textarea id="content_field" class="required-entry" style="width: 450px;" name="content" rows="10" cols="53"></textarea></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><label for="filename">Attach Reseller Permit (2Mb limit)</label><br> <input id="filename" class="input-file" style="width: 450px;" name="filename" type="file"></div>
<div class="button-set">&nbsp;</div>
<div class="button-set"><span><span><br></span></span></div>
<div class="button-set"><button class="button right form-button" type="submit"><span>  <span>Submit ticket</span></span> </button></div>
</form>

我试过使用 name="content[]" 但它也返回了 "Array"

该模块看起来正在使用这个 post 方法:

public function newAction()
{
    if (!$this->_getCustomerSession()->getCustomerId()) {
        $this->_getCustomerSession()->authenticate($this);
        return;
    }
    $session = Mage::getSingleton('core/session');
    $customer = $this->_getCustomerSession()->getCustomer();

    $Proto = Mage::getModel('helpdeskultimate/proto');
    $postData = $this->getRequest()->getPost();

    if (isset($postData['department_id'])) {
        $Proto->setDepartmentId($postData['department_id']);
    }
    try {

        $Proto
                ->setSubject(@$postData['title'])
                ->setContent(@$postData['content'])
                ->setPriority(@$postData['priority'])
                ->setStoreId(Mage::app()->getStore()->getId())
                ->setFrom(Mage::getSingleton('customer/customer')->getId())
                ->setSource('web');

插入到消息字段中似乎来自这里:

/* Insert */
    try {
        $message->setContent(trim($data['content']));
        $validateResult = $message->validate();

完整的控制器文件可以从http://www.gingabox.com/CustomerController.zip下载

我不确定如何实际使用带有@$postData['content'] 的 foreach 语句,或者是否有更好的解决方案。

我很乐意询问 AheadWorks,但被他们告知他们目前不接受定制查询(太忙了)...

任何帮助将不胜感激!

4

2 回答 2

1

将 PHP 数组转换为字符串时会得到“数组”一词;由于数组值可以包含任何内容,PHP 不会费心去弄清楚如何转换数组,而只是返回字符串"Array"。这正是该行中发生的事情:

// The trim() function casts $data as a string => string(5) "Array"
$message->setContent(trim($data['content']));

有些函数返回数组内容的字符串表示形式,例如print_r(). 这将在多行字符串中吐出数组,因此将其合并到您的代码中将是:

$message->setContent(print_r($data['content'], TRUE));

如果您希望将数组的内容作为单行字符串,您可能应该使用foreach()您在问题中提到的语句。这是一个简单的例子:

$contentString = 'Second Form values:' . PHP_EOL;
foreach($data['content'] as $key => $value) {
    $contentString .= PHP_EOL . '    ' . $key . ': ' . $value;
}

然后您就可以将其$contentString用作消息,而不是$data直接访问数组值。我不知道该validate()方法在您的示例中做了什么,但在将它们用作电子邮件正文之前,确保您正确转义第二种形式中的值绝对是一个好主意。

于 2013-09-01T14:58:44.947 回答
0

如果您可以更改 HTML 中的表单定义,那么也许您将能够接收一个数组作为内容,请查看以下示例:

<form id="helpdesk-ticket-form" action="tescik.php" method="post" enctype="multipart/form-data"><input name="title" value="WHOLESALE SETUP REQUEST" type="hidden">
<div><label for="title_field">Name<span class="required">*</span></label><br> <input id="title" class="input-text required-entry" style="width: 250px;" name="content[name]" value="" type="text"></div>
<div>&nbsp;</div>
<div><label for="title_field">Company Name<span class="required">*</span></label>    <br><input id="content_field" class="input-text " title="Company" name="content[company]" value="" type="text"></div>
<input name="department_id" value="2" type="hidden">
<div>&nbsp;</div>
<div><label for="content_field">Message<span class="required">*</span></label><br>     <textarea id="content_field" class="required-entry" style="width: 450px;" name="content[message]" rows="10" cols="53"></textarea></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><label for="filename">Attach Reseller Permit (2Mb limit)</label><br> <input id="filename" class="input-file" style="width: 450px;" name="filename" type="file"></div>
<div class="button-set">&nbsp;</div>
<div class="button-set"><span><span><br></span></span></div>
<div class="button-set"><button class="button right form-button" type="submit"><span>  <span>Submit ticket</span></span> </button></div>
</form>

请注意更改的表单名称content[message],例如content[company]等。这应该解析为值数组。

于 2013-09-03T07:28:10.863 回答