1
我有一個提交表單(或路由設計)的問題,刪除基於id的N表。 我一提出,使用索引PHP文件一個簡單的路由功能:問題發送路由POST參數
function relativeRouter ($controller,$action,$query_data=""){
$param = is_array($query_data) ? http_build_query($query_data) : "$query_data";
$url = "index.php?controller=$controller&action=$action&$param";
return $url;
索引創建使用控制器控制器的實例=? & action = ?. 它還將POST/GET參數綁定到方法參數(在數組中,$ params)。 (IM已經意識到不直接使用調用超全局)
$params=array();
if(isset($_GET['controller'])&&isset($_GET['action'])){
$c = $_GET['controller'];
$a = $_GET['action'];
// add all query string additional params to method signature i.e. &id=x&category=y
$queryParams = array_keys($_GET);
$queryValues = array_values($_GET);
for ($i=2;$i<count($queryParams);$i++) {
$params[$queryParams[$i]] = $queryValues[$i];
}
if ($_POST) {
print_r($_POST); // THIS CONTAINS ONLY 1 PASSED ID.
// add all query string additional params to method signature i.e. &id=x&category=y
$queryParams = array_keys($_POST);
$queryValues = array_values($_POST);
for ($i=0;$i<count($_POST);$i++) {
$params[$queryParams[$i]] = $queryValues[$i];
}
}
include_once APP_ROOT."/controller/$c.php";
$controller = new $c();//CombustibiliController
$controller->$a($params);//inserimento
} else {
//attiva controller predefinito
$controller = new Admin();
$controller->index();
}
路由行之有效與不同的HTML表單項目名稱的形式。 (name =''),但我通過傳遞一個用於多重複選框刪除的ID數組來表示問題。
的$ _POST正到達一個數組只有一個項目,而不是多個:
Array ([ids] => 110)
雖然與插入表格沒有麻煩的作品:
Array ([title] => 435 [desc] => 5534)
這裏表視圖:
<?php
if (isset($products)) {
$action = relativeRouter("ProductsController", "deleteProducts");
$html="<form id='multiselect' action='$action' method='POST'>\n";
foreach ($products as $product) {
$html.= "<tr>\n"
."<td><input type='checkbox' name='ids' value='".$product->id."'></td>\n"
."<td>".$product->id."</td>\n"
."<td>".$product->title."</td>\n"
."<td>".$product->description."</td>\n"
."<td>".$product->image."</td>\n"
."</tr>\n";
}
$html.="</form>\n";
echo $html;
}
?>
在這裏,從一個按鈕運行形式的jQuery:
<script>
function send() {
$('#multiselect').submit();
$('.play-confirm-modal').modal('hide');
}
$('.play-crud-delete').on('click',function(){
var checked = $("input:checkbox:checked").length;
if(checked>0) {
$('.play-confirm-modal').modal('show');
console.log(checked);
} else {
alert("No selected checkboxes");
}
});
</script>
希望有人能幫忙。 Firefox網絡顯示模塊參數,但POST只包含其中一個,總是最後一個。
''替換此並檢查。 'name'應該包含多值 – gvgvgvijayan
的數組運算符。這是關於PHP的東西?我從來沒有像Java和Groovy那樣做過類似的事情。 –
是在PHP多維總是與數組運算符 – gvgvgvijayan