如何在 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 刀片模板中检查当前的身份验证守卫及其来宾?

Laravel 5.2:如何在刀片模板中设置变量,没有 php 标签?

如何在 laravel 刀片模板系统的下拉列表中添加属性 ID?