На mysite/build-order у меня есть длинный код заказа, который я собираю с помощью Javacsript и отправляю через _GET в URL на страницу 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>
Я реализовал настройку hook_menu в своем пользовательском модуле под названием «create_order_menu», и он отлично работает.
function mymodule_create_order_menu($ordercode){
// do stuff with $ordercode
}
Все работает нормально. Единственная проблема заключается в том, что строка кода заказа, передаваемая через URL-адрес, иногда может быть в два раза длиннее и вызывает ошибку 404 на странице mysite/create-order. Когда я сокращаю код, он работает. Когда я снова удлиняю его, он ломается.
Есть ли лучший способ отправить такую длинную переменную в настройку моей страницы 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>
Я реализовал настройку hook_menu в своем пользовательском модуле под названием «create_order_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?