我认为这将是一项轻松的尝试,但事实证明这很复杂。
所以我有一个以下获取的网址:
?mt-make=ford&mt-model=fiesta
表格如下:
因此,当用户点击“垃圾箱”图标时,我想取消设置_GET变量。
<?php foreach ( $_GET as $k => $v ) { ?>
<?php if ( $k == 'mt-vehicle' || empty( $v ) ) { continue; } ?>
<li class="mt-search-tags-list-item"><a href="#"><?php echo $v; ?> <span class="dashicons dashicons-trash"></span></a></li>
<?php } ?>
怎么会这样做?
我尝试而不是带有name="mt-make"
的按钮的链接,其值为空值,认为它会覆盖网址中的_GET - 但它没有!那是出乎意料的。相反,我得到了这个?mt-make=&mt-make=ford&mt-model=fiesta
通知双mt-make
!
答案 0 :(得分:0)
您需要生成“垃圾”链接服务器端。我建议你将链接生成封装成一个函数。 这是开始的东西。传递您要排除的参数的名称:
function generateTrashUrl($propToExclude)
{
// Let's create an array from GET query
$queryParams = [];
parse_str($_SERVER['QUERY_STRING'], $queryParams);
if ($queryParams) {
// Now let's check if required parameter is in the array; if it is - get it out
if (array_key_exists($propToExclude, $queryParams)) {
unset($queryParams[$propToExclude]);
}
// Generate base of the resulting URL
$result = 'http://' . $_SERVER['HTTP_HOST'];
// Transform our modified parameters array into query string and append it to URL base
return $result .= http_build_query($queryParams);
}
}