【问题标题】:How to pass view array from controller to view如何将视图数组从控制器传递到视图
【发布时间】:2014-07-02 15:05:07
【问题描述】:

我知道这很简单.. 但我想我遗漏了一些东西,我收到了这个错误,我在发帖之前尝试了所有方法

Trying to get property of non-object 

控制器

$temp = Servers::all();
        $data = array();
        foreach ($temp as $key) {
            $data[] = array(
                'srv_id'     => $key->srv_id,
                'srv_name'   => $key->srv_name,
                'srv_status' => $key->srv_status,
                'srv_files'  => $key->srv_files,
                'srv_disk'   => $this->ConvertBytes( $key->srv_disk ),
                'srv_ip'     => $key->srv_ip

                );
        }

return View::make( 'pages.server', compact( 'data' ) );

如果我转储代码,这就是我得到的

var_dump

array(10) {
  [0]=>
  array(6) {
    ["srv_id"]=>
    string(3) "389"
    ["srv_name"]=>
    string(3) "u02"
    ["srv_status"]=>
    string(2) "ON"
    ["srv_files"]=>
    string(5) "43832"
    ["srv_disk"]=>
    string(9) "520.07 Gb"
    ["srv_ip"]=>
    string(13) "89.39.196.138"
  }
  [1]=>
  array(6) {
    ["srv_id"]=>
    string(3) "392"
    ["srv_name"]=>
    string(3) "u07"
    ["srv_status"]=>
    string(2) "ON"
    ["srv_files"]=>
    string(5) "42566"
    ["srv_disk"]=>
    string(9) "495.16 Gb"
    ["srv_ip"]=>
    string(13) "89.39.196.147"
  }

查看 这就是我在页面中查看数组的方式

@foreach($data as $server)
    <td>{{ $server['srv_id'] }}</td>
    <td>{{ $server['srv_name'] }}</td>

【问题讨论】:

  • 当您可以执行$servers = Servers::all();,将compact('servers') 传递给视图,然后执行@foreach ($servers as $server) ... @endforeach 时,为什么还要遍历整个循环?更短,更容易阅读和维护。 :)
  • 我当然可以这样做,但是,我将一个元素包装在控制器中的一个函数中......并且我无法在我的视图中调用该函数
  • 我认为该方法可能属于模型,那么。没关系,至少你把问题解决了。 :)

标签: laravel laravel-4


【解决方案1】:

您收到Trying to get property of non-object 错误消息的原因是因为$temp 中的数据是一个数组,而您试图将其作为对象访问。试试这个吧。

$temp = Servers::all();
$data = array();
foreach ($temp as $key) {
    $data[] = array(
        'srv_id'     => $key['srv_id'],
        'srv_name'   => $key['srv_name'],
        'srv_status' => $key['srv_status'],
        'srv_files'  => $key['srv_files'],
        'srv_disk'   => $this->ConvertBytes( $key['srv_disk'] ),
        'srv_ip'     => $key['srv_ip']
    );
}

数组可以这样访问:

$foo['bar'];

虽然可以像这样访问对象:

$foo->bar;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2011-07-19
    • 1970-01-01
    相关资源
    最近更新 更多