カートを空にするリンク(フォーム送信ではない)を作成しようとしています。私のリンクは/ cart/emptyになります。
URLが機能するためのケースや何かを作成する場所が見つかりません。
カートを空にするためにuc_cart_empty(uc_cart_get_id())
を使用する必要があることはわかっています。
カートリンクAPIページを確認してください: http://www.ubercart.org/node/1427
したがって、カートリンクモジュール(Ubercartに含まれる)を有効にする必要があり、リンクは次のようになります。
_http://example.com/cart/add/e
_
Ubercartはこのアクションの確認を求めます。この確認を望まない場合は、独自の空のカートルーチンを作成する必要があると思います。
独自のモジュールhook_menuで、目的のパスのエントリを定義します。次に、独自の関数をコールバックとして割り当てます。その関数内で、uc_cart_empty(uc_cart_get_id());
を呼び出します
例えば:
_ function mymodule_menu() {
$items['your/path'] = array(
'page callback' => 'mymodule_empty_cart',
);
return $items;
}
function mymodule_empty_cart() {
uc_cart_empty(uc_cart_get_id());
return 'Your cart has been emptied.';
}
_
ユーザーに表示するメッセージを提供する必要があることに注意してください。
AJAX(ページのリロードは行われない))でリンクを使用する場合は、次のようにする必要があります。
_ function mymodule_menu() {
$items['your/path'] = array(
'page callback' => 'mymodule_empty_cart',
'type' => MENU_CALLBACK
);
return $items;
}
function mymodule_empty_cart() {
uc_cart_empty(uc_cart_get_id());
print 'done';
}
_
AJAX呼び出しを行うには、jQueryコードを追加する必要があります。印刷ステートメントはユーザーのブラウザーに送り返されますが、表示されません(少なくともユーザーに表示しない場合)あなたのjQueryコードで)。
どちらの例でも、他のメニューオプション(アクセス制限など)を調整できます。 hook_moduleのドキュメントを確認してください: http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_menu/8