在 mysite/build-order 我有一个很长的订单代码,我正在使用 Javacsript 组装并通过 URL 中的 _GET 发送到 hook_menu 页面进行处理。
它可以和这个一样长(或更长),并将其发送到创建订单页面,如下所示:
<script type="text/javascript">
//...building code
var orderCode = "sku:OR-4x4>qty:2>prc:55.00>nfo:OR-4x4,sku:CVR>qty:1>prc:50>nfo:OR-4x4,sku:PF>qty:15>prc:2>nfo:OR-4x4 (sdfsdfg),sku:EM>qty:2>prc:12.95>nfo:OR-4x4 (sdfsdfg),sku:SC>prc:25>qty:4>nfo:Some description,sku:DB>qty:10>prc:4>nfo:Some description,sku:ES>qty:10>prc:3>nfo:BlahBlah,sku:OR-4x4>qty:2>prc:55.00>nfo:OR-4x4,sku:CVR>qty:1>prc:50>nfo:OR-4x4,sku:PF>qty:15>prc:2>nfo:OR-4x4 (sdfsdfg),sku:EM>qty:2>prc:12.95>nfo:OR-4x4 (sdfsdfg),sku:SC>prc:25>qty:4>nfo:Some description,sku:DB>qty:10>prc:4>nfo:BlahBlah-visiondelimiter-Phasellus laoreet lorem vel dolor tempus vehicula. Curabitur blandit tempus ardua ridiculus sed magna. Quisque placerat facilisis egestas cillum dolore.-visiondelimiter-eventName";
var url = '/create-order/' + orderCode;
window.location.replace(url);
</script>
我已经在我的名为“create_order_menu”的自定义模块中实现了一个 hook_menu 设置,它工作正常。
function mymodule_create_order_menu($ordercode){
// do stuff with $ordercode
}
一切正常。唯一的问题是通过 URL 传递的订单代码字符串有时可能是两倍长,并且它会在 mysite/create-order 页面中触发 404 错误。当我缩短代码时,它可以工作。当我再次延长它时,它会破裂。
有没有更好的方法将这么长的变量发送到我的 hook_menu 页面设置?
编辑(基于下面的评论)
在 mysite/build-order 我有一个很长的订单代码,我正在使用 Javacsript 组装并使用 AJAX 通过 POST 发送到 hook_menu 页面进行处理。
它可以和这个一样长(或更长),并将其发送到创建订单页面,如下所示:
<script type="text/javascript">
//...building code
var orderCode = "sku:OR-4x4>qty:2>prc:55.00>nfo:OR-4x4,sku:CVR>qty:1>prc:50>nfo:OR-4x4,sku:PF>qty:15>prc:2>nfo:OR-4x4 (sdfsdfg),sku:EM>qty:2>prc:12.95>nfo:OR-4x4 (sdfsdfg),sku:SC>prc:25>qty:4>nfo:Some description,sku:DB>qty:10>prc:4>nfo:Some description,sku:ES>qty:10>prc:3>nfo:BlahBlah,sku:OR-4x4>qty:2>prc:55.00>nfo:OR-4x4,sku:CVR>qty:1>prc:50>nfo:OR-4x4,sku:PF>qty:15>prc:2>nfo:OR-4x4 (sdfsdfg),sku:EM>qty:2>prc:12.95>nfo:OR-4x4 (sdfsdfg),sku:SC>prc:25>qty:4>nfo:Some description,sku:DB>qty:10>prc:4>nfo:BlahBlah-visiondelimiter-Phasellus laoreet lorem vel dolor tempus vehicula. Curabitur blandit tempus ardua ridiculus sed magna. Quisque placerat facilisis egestas cillum dolore.-visiondelimiter-eventName";
$.ajax({
type: "post",
url: "/create-order/index.php",
data: {
'orderCode': orderCode,
}
})
.done(function( msg ) {
var newpage = '/create-order/index.php';
window.location.replace(newpage);
})
</script>
我已经在我的名为“create_order_menu”的自定义模块中实现了一个 hook_menu 设置,它工作正常。这将创建页面 mysite/create-order。此页面中有一堆 php 必须将 orderCode 字符串解析为单独的任务。但是,我无法让 hook_menu 函数接收 _POST 变量。这不起作用:
function mymodule_create_order_menu(){
$orderCode = $_POST['orderCode']; //doesn't work
// do tasks with $orderCode
}
这也不是,因为 _POST 声明在函数之外,所以在加载 mysite/create-order 时它实际上从未被调用:
$orderCode = $_POST['orderCode']; //doesn't work
function mymodule_create_order_menu($orderCode){
// do tasks with $orderCode
}
我是否必须向我的模块 hook_menu 添加任何参数才能传递到 create_order 页面?
function mymodule_menu(){
/**
* Implements hook_menu()
*/
$items['create-order'] = array(
// page title
'title' => 'Create Order',
// function that is called when visiting the new path
'page callback' => 'mymodule_create_order',
'type' => MENU_CALLBACK,
'access callback' => 'user_is_logged_in',
);
return $items;
}
将 _POST 变量传递到我的 hook_menu 页面的最佳方式是什么?