Model和Array之间的关系是什么?它的复杂
寻找思路决策模型和阵列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表包含颜色和外键
引用,但这不是我的目标,我需要使用数组
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>
它的工作'文本(result.color)',但文本(result.data.color)'didint工作 –
编辑答案以从result.data.color中删除数据以获得result.color。对你感到高兴,它正在工作。 –
首先,一个笑话:有什么型号和阵列之间的关系?这很复杂。
谢谢。
现在,您可以使用帮助器的查找数组(我将其重命名为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会改变,你需要在硬编码的任何地方改变它们。
- 您真的应该重新考虑将颜色放入表格中。
你需要在服务器端的'颜色()辅助函数,或者是罚款也将被移动到的Javascript呢? – lesssugar
这两种方式将帮助我 –