2017-06-16 65 views
1

尋找思路決策模型和陣列Model和Array之間的關係是什麼?它的複雜

之間的關係,如果我有助手運行陣列,像這樣的例子功能:

PHP

function color(){ 
$array = ['Black','Red','Orange','Yellow','Green','Blue']; 
return $array; 
} 

,並有一個表在我的數據庫中返回數組鍵值以上

public function up() 
{ 
    Schema::create('color', function (Blueprint $table) { 
     $table->tinyIncrements('id'); 
     $table->tinyInteger('color_number'); 
     $table->timestamps(); 
    }); 
} 

控制器

public function viewAjax(Request $request) 
{ 
    if($request->ajax()){ 
     $id = $request->id; 
     $info = Color::find($id); 
     return response()->json($info); 
    } 
} 

時要查看輸出,如果在jQuery的語句作爲Ajax請求

視圖

<label> user color: </label><span id="view_user_color"></span> 


<script type="text/javascript"> 
function fun_view_color(id) 
{ 
    var view_url = $("#hidden_view_color").val(); 
    $.ajax({ 
     url: view_url, 
     type:"GET", 
     data: {"id":id}, 
     success: function(result){ 
      function typeColor() { 
       if (color === 0) { 
        $("#view_user_color").text("Black"); 
       } elseif(color === 1) { 
        $("#view_user_color").text("Red"); 
       }elseif(color === 2) { 
        $("#view_user_color").text("Orange"); 
       }elseif(color === 3) { 
        $("#view_user_color").text("Yellow"); 
       }elseif(color === 4) { 
        $("#view_user_color").text("Green"); 
       }elseif(color === 5) { 
        $("#view_user_color").text("Blue"); 
       } 

      } 
     } 
    }); 
} 

使用if語句它是如此糟糕,我使用,使代碼太長

我尋找連擊方式做到這一點

我知道還有另一種方式由maki NG表包含顏色和外鍵

引用,但這不是我的目標,我需要使用數組

+0

你需要在服務器端的'顏色()輔助函數,或者是罰款也將被移動到的Javascript呢? – lesssugar

+0

這兩種方式將幫助我 –

回答

1
public function viewAjax(Request $request) 
    { 
    //include the helper function 
    $colors = color(); //array of colors 
    if($request->ajax()) { 
    $id = $request->id; 
    $info = Color::find($id); 
    $info->color = $colors[$info->color_number]; 
    return response()->json($info); 
    } 

} 並在視圖

<label> user color: </label><span id="view_tower_color"></span> 


    <script type="text/javascript"> 
     function fun_view_color(id) 
     { 
     var view_url = $("#hidden_view_color").val(); 
     $.ajax({ 
     url: view_url, 
     type:"GET", 
     data: {"id":id}, 
     success: function(result){ 
        $("#view_user_color").text(result.color); 
          } 
     }); 
    } 
</script> 
+0

它的工作'文本(result.color)',但文本(result.data.color)'didint工作 –

+0

編輯答案以從result.data.color中刪除數據以獲得result.color。對你感到高興,它正在工作。 –

1

首先,一個笑話:有什麼型號和陣列之間的關係?這很複雜。

謝謝。

現在,您可以使用幫助器的查找數組(我將其重命名爲colorMap())。試想一下:

<?php 

function colorMap() { 

    // The keys match the color IDs you store in the database 
    $array = [ 
     '0' => 'Black', 
     '1' => 'Red', 
     '2' => 'Orange', 
     '3' => 'Yellow', 
     '4' => 'Green', 
     '5' => 'Blue' 
    ]; 

    return $array; 
} 


<?php 

public function viewAjax(Request $request) { 

    if ($request->ajax()) { 
     $id = $request->id; 
     $info = Color::find($id); 

     // Pass an array containint the Color Model and the color map 
     return response()->json([ 
      'color' => $info, 
      'colorMap' => colorMap() 
     ]); 
    } 
} 

而且JS:

<script type="text/javascript"> 

    function fun_view_color(id) { 

     var view_url = $("#hidden_view_color").val(); 

     $.ajax({ 
      url: view_url, 
      type:"GET", 
      data: {"id":id}, 
      success: function(result) { 
       setColorName(result); 
      } 
     }); 
    } 

    function setColorName(result) { 

     var colorId = result.info.id; // Passed from controller 
     var colorName = result.colorMap[colorId]; // Passed from controller 

     $("#view_user_color").text(colorName); 

    } 

</script> 

注:

  • 的代碼不使用任何驗證,您應該提供
  • 這種方法有一個主要的缺陷:如果顏色ID會改變,你需要在硬編碼的任何地方改變它們。
  • 您真的應該重新考慮將顏色放入表格中。
相關問題