2017-01-02 95 views
0

我工作的一個項目中,我必須做出一個用戶角色系統。其幾乎完成了一個數組,但在這裏我要補充的路徑和用戶權限在我的數據庫結束像做多選擇字段

[route] => Array 
    (
     [0] => api/user 
     [1] => members 
    ) 

[assess] => Array 
    (
     [0] => read 
     [1] => write 
     [2] => read 
     [3] => delete 
    ) 

一個數組,但我需要的是讓喜歡

[0](
    [route] => Array 
     (
      [0] => api/user 
     ) 
    [assess] => Array 
     (
      [0] => read 
      [1] => write 
     ) 
) 
[1](
    [route] => Array 
     (
      [0] => members 
     ) 
    [assess] => Array 
     (
      [0] => read 
     ) 
); 

這陣是我的HTML代碼:

<tbody class="tbody"> 
    <tr class="gradeX"> 
     <td> 
     <select name="route[]"> 
     <?php $routeCollection = Route::getRoutes(); 
      foreach ($routeCollection as $value) { 
       echo '<option value="'.$value->getPath().'">'.$value->getPath().'</option>'; 
      } ?> 
     </select> 
     </td> 
     <td><input type="checkbox" value="read" name="check[]"></td> 
     <td><input type="checkbox" value="write" name="check[]"></td> 
     <td><input type="checkbox" value="delete" name="check[]"></td> 
     <td><a href="javascript:;" style="padding: 3px 9px;" class="remove">Delete</a></td> 
     <div class="add-row" style="float: right;border: 1px dashed grey;border-radius:5px;border-bottom: 0px;"> 
      <a href="javascript:;" style="padding: 3px 9px;"><span class="add">Add New</span></a> 
     </div> 
    </tr> 
    </tbody> 
+1

你怎麼分割?基於什麼邏輯? –

+0

基於你的兩個數組是不可能的。你必須告訴我們什麼是要實現以獲得所需輸出 –

+0

我們怎麼確定路線及其相關的評估邏輯? –

回答

0

由於只有選中的複選框是在表單提交提交,和你的複選框鏈接到您的選擇,一個key值添加到所有名稱數組屬性 -

<tbody class="tbody"> 
    <tr class="gradeX"> 
     <td> 
     <select name="route[0]"> 
     <?php $routeCollection = Route::getRoutes(); 
      foreach ($routeCollection as $value) { 
       echo '<option value="'.$value->getPath().'">'.$value->getPath().'</option>'; 
      } ?> 
     </select> 
     </td> 
     <td><input type="checkbox" value="read" name="check[0][]"></td> 
     <td><input type="checkbox" value="write" name="check[0][]"></td> 
     <td><input type="checkbox" value="delete" name="check[0][]"></td> 
     <td><a href="javascript:;" style="padding: 3px 9px;" class="remove">Delete</a></td> 
     <div class="add-row" style="float: right;border: 1px dashed grey;border-radius:5px;border-bottom: 0px;"> 
      <a href="javascript:;" style="padding: 3px 9px;"><span class="add">Add New</span></a> 
     </div> 
    </tr> 
    </tbody> 

您將需要增加的關鍵在你的JavaScript代碼'添加新'這個工作

然後在PHP中,你可以循環你的值,使用key來鏈接,即。

$array = []; 
foreach($_POST['route'] as $key => $value){ 
    $array[] = array("route" => array($_POST['route'][$key]), // this is the route value, ie. api/user or members 
        "assess" => array($_POST['check'][$key]) //this is the check array, ie. read, write or read 
       ); 
} 
+0

先生我有一個工作的jQuery腳本追加一個新的行 –

+0

我想這個,所以你只需要修改該jQuery腳本來增加'key'當你追加一個新行。 – Sean