2017-06-16 35 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会改变,你需要在硬编码的任何地方改变它们。
  • 您真的应该重新考虑将颜色放入表格中。
相关问题