如何在 laravel 刀片模板中使用 JSON 数据进行模型绑定?
Posted
技术标签:
【中文标题】如何在 laravel 刀片模板中使用 JSON 数据进行模型绑定?【英文标题】:How to do Model binding using JSON data in laravel blade template? 【发布时间】:2015-03-19 18:46:02 【问题描述】:我正在尝试在 Laravel 中查看特定用户的信息。从下拉菜单中选择用户。我正在尝试使用 jQuery 显示此用户的信息。
这是下拉列表的代码:
Form::label('Field Force Select:' )
<select name="field_force" id="ffID">
<option value=""> --- Please Select a Field Force --- </option>
@foreach($users as $user)
<option value=" $user->id ">
$user->first_name.' '.$user->last_name
</option>
@endforeach
</select>
这是$users
的路由文件中的代码:
public function getAccount()
$group = Sentry::findGroupByName('Field Force');
$users = Sentry::findAllUsersInGroup($group);
$currentUser = Sentry::getUser();
return View::make('users/account',
array('as' => 'account'))
->with(compact('users', 'currentUser')
);
从下拉列表中选择一个用户后,我使用此代码获取用户特定信息:
<script>
$('#ffID').change(function()
var infoShare= $('.infoStorage');
$.get(" url('api/dropDownUserInformation')",
option: $(this).val() ,
function(data)
$.each(data, function(index, element)
alert( element.id );
);
);
);
这里是api/dropDownUserInformation
的路由文件:
Route::get('api/dropDownUserInformation',function()
$fieldForceID=Input::get('option');
$invoices=Invoice::where('sender_id','=',$fieldForceID)->get();
return Response::json($invoices);
);
到目前为止,这段代码工作正常,但是当我尝试通过模型绑定从一个表访问数据到另一个表时,它不允许我访问用户特定的信息。这是发票模型:
<?php
class Invoice extends \Eloquent
protected $fillable = [];
public function sales()
return $this->hasMany('Sale', 'invoice_id','sender_id');
public function accounts()
return $this->belongsTo('SaleAccount');
public function senderName()
return $this->belongsTo('User','sender_id');
我想使用SenderName()
访问users
表。所以我在我的脚本中写了这段代码:
alert( element.SenderName.first_name );
在控制台中显示此错误: TypeError: element.SenderName 未定义
我可以通过从路由文件中正常返回一些变量来进行模型绑定。
这是路由文件中的代码:
public function getUserInfo()
$invoice=Invoice::where('id','=',1)->get();
return View::make('users/account', array(
'as' => 'account'))->with(compact('invoice'));
这是查看文件中的代码:
@foreach($invoice as$inv)
$inv->senderName->first_name
@endforeach
效果很好,但是返回JSON格式的数据后不知道怎么做。
【问题讨论】:
【参考方案1】:我会改变路线:
Route::get('api/dropDownUserInformation',function()
$fieldForceID = Input::get('option');
$invoices = Invoice::where('sender_id','=',$fieldForceID)
->join('users', 'invoices.sender_id', '=', 'users.id')->get();
return Response::json($invoices);
);
这应该可以在您的 jquery 函数中按如下方式访问...
alert( element.first_name );
【讨论】:
以上是关于如何在 laravel 刀片模板中使用 JSON 数据进行模型绑定?的主要内容,如果未能解决你的问题,请参考以下文章
laravel 5.3 - 在刀片模板中显示来自 mysql 文本字段的 json 数据
如何在刀片模板 laravel 中使用单个文件 vue 组件?
如何在刀片模板的 foreach 循环中访问 laravel 集合?
如何在 laravel 刀片模板中检查当前的身份验证守卫及其来宾?