【问题标题】:returning multiple variables to view返回多个变量以查看
【发布时间】:2014-11-04 15:25:51
【问题描述】:

所以我是 Laravel 的新手。 我知道如何将数组传递给视图。我也试图通过将其他变量传递给视图来改变这个基本概念。

这是我的路线:

Route::get('sites', function()
{
$thosting = DB::table('sites')
            ->select(DB::raw('sum(hosting_fee) as thosting'))
            ->where('active', True)
            ->get();

 $tdomain = DB::table('sites')
            ->select(DB::raw('sum(domain_fee) as tdomain'))
            ->where('active', True)
            ->get();

$atotal = $thosting + $tdomain;

$sites = Site::where('active', True)->orderBy('updated_at', 'DESC')->get();
return View::make('sites')
    ->with('sites', $sites)
    ->with('thosting', $thosting)
    ->with('tdomain', $tdomain)
    ->with('atotal', $atotal);

//var_dump($sites);
});

这里是查看sites.blade.php

@extends('layouts.master')

@section('content')
<div class="container well">
<table class="table-condensed">
<th>Annual Hosting</th><th>Annual Domain Name</th><th>Total Annual Income</th>
<tr>
    <td>{{ thosting }}</td>
    <td>{{ tdomain }}</td>
    <td>{{ atotal }}</td>
</tr>
</table>
<h1>Hosting Accounts - Nearest to expiration </h1>
@foreach($sites as $site)
    <a href="{{ URL::to('edit', $site->id) }}"><p>{{ $site->host_renewal_date }} -           {{$site->site}}</p></a>
@endforeach
@stop

</div> 

$site->Id 等按预期显示站点列表。但是当我尝试像 {{ thosting } 一样显示它们时,我传递的 3 个新变量 thosting、tdomain 和 atotal 会导致错误。错误是ErrorException,已定义(E_unknown)

Use of undefined constant thosting - assumed 'thosting' (View: C:\Users\myname\Desktop\websites\laravel\first\app\views\sites.blade.php)

我假设我没有正确访问我尝试过的变量 回声主机

那也没用。文档没有解决返回多个变量或数组变量的问题。感谢经验丰富的兽医提供的任何帮助。最后,我想弄清楚的是如何从几个数据库查询中返回视图数据。

谢谢

【问题讨论】:

  • 您不必为每个变量调用with。您可以将关联数组作为第二个参数传递给View::make
  • Scheisse_minelli 我的主要问题是不知道如何在刀片中显示变量。如果关联数组有帮助,如果您能告诉我如何做,我很感兴趣。谢谢
  • 第一个答案是完全准确的。在{{ $var }} 中,您只需将其视为一个小的 php 语句。它大致相当于&lt;?php echo $var; ?&gt;。在with 方法中,第一个参数(字符串)将是变量到达视图后的名称。如果第一个答案对您不起作用,那么这些变量很可能在到达时未定义。
  • 我刚试过 。它给出了数组到字符串的转换错误。我在“with”方法中的第一个参数称为托管。当我 print_r 或 var_dump 时,路径和视图中的 $thosting 都显示为非空。

标签: laravel laravel-4 routing views


【解决方案1】:

好的,谢谢大家。这就是我最终要工作的内容:

{{ $thosting[0]->thosting }}

Print_r 告诉我该对象有一个属性名称,因为我有“sum(hosting_fee) 作为 thosting”。我试图指向 thosting(AS 名称)并且它起作用了。毕竟它是一个数组。很棒的学习经历。

如果有一种方法可以将所有这些学习示例添加到 Laravel 文档中,那就太好了,该文档中只有几个示例说明了可能的情况,而遗漏了很多。

谢谢大家。

【讨论】:

    【解决方案2】:

    您还需要在 Blade 视图中的 PHP 变量中使用 $,否则它将尝试查找常量。所以改成

    <td>{{ $thosting }}</td>
    <td>{{ $tdomain }}</td>
    <td>{{ $atotal }}</td>
    

    【讨论】:

    • 虽然看起来很难,但我仍然遇到错误。这个说 ErrorException (E_UNKNOWN) 数组到字符串的转换(查看:C:\Users\Norman Bird\Desktop\websites\laravel\first\app\views\sites.blade.php)....我相信这意味着对象是一个字符串而不是一个数组。我尝试使用@foreach 进行迭代,但仍然出现更多错误。
    • 这就是我在刀片中的方式:{{ $thosting }} {{ $tdomain }}
    • 记住我在 routes.php 中的数据库查询使用的是 RAW SQL 方法并返回一个 COUNT。当我使用 Print_r 时,我可以看到计数中的 $thosting 并且刀片的值为“273”。当我尝试在刀片中显示它时出现错误。我试过 $thosting, thosting, thosting->thosting, thosting[0], $thosting->...都被 {{ }} 包围,但没有运气。我试过 。我不知道是不是因为我只使用路由而不是控制器?我相信我们可以使用路由。
    • 嗯,这可能会有所帮助。这是 Print_r 在刀片中运行时报告的内容: Array ( [0] => stdClass Object ( [sum(hosting_fee)] => 273.00 ) )
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多