我们正在使用Aheadworks帮助台模块,并尝试创建第二个表单以捕获特定信息,并使用该表单创建一个票证,其中所有表单内容都发布到帮助台的“内容”部分。
问题是,如果我使用name =“content”,那么发布到“内容”部分的内容就是“数组”
表单代码非常简单:
<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> </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> </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> </div>
<div> </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"> </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,但他们告诉他们他们现在不接受定制查询(太忙)......
任何帮助将不胜感激!
答案 0 :(得分:1)
单词“Array”是将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()
方法在您的示例中做了什么,但在将它们用作电子邮件正文之前,确保您正确地转义第二个表单中的值绝对是一个好主意。
答案 1 :(得分: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> </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> </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> </div>
<div> </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"> </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]
等。这应该解析为值数组。