将控制器功能中的所有变量发送到视图

时间:2015-12-22 18:39:45

标签: php laravel view controller laravel-5

我的控制器中有一个功能。我创建了很多变量,并通过compact函数逐个将它们发送到我的视图。

public function edit($id,$cpe_mac) {

        $vcpe = VSE::vcpe($cpe_mac);
        $vcpe = json_decode (json_encode($vcpe), FALSE);
        $cpe = VSE::cpe($cpe_mac);
        $wan = $cpe['wan'];
        $acl = $cpe['acl'];
        $guest = $cpe['vlan'][0];
        $private = $cpe['vlan'][1];
        $cpe_name = VSE::cpe_name($cpe_mac)['cpe_name'];
        $p_max_up = $private['bandwidth']['max_up'];
        $p_max_down = $private['bandwidth']['max_down'];
        $p_ip = $private['lan']['ip_address'];
        $p_netmask = $private['lan']['netmask'];
        $p_max_clients = $private['lan']['dhcp_server']['max_clients'];
        $p_dns = $private['lan']['dhcp_server']['dns'][0];
        $p_dns2 = $private['lan']['dhcp_server']['dns'][1];
        $cpe = json_decode (json_encode($cpe), FALSE);

        return view('cpe.edit', compact(['vcpe','cpe_mac','cpe_name','cpe','wan','acl','private','guest',
            'p_max_up','p_max_down','p_ip','p_netmask','p_max_clients','p_dns','p_dns2'

        ]));

}

问题

有没有办法将所有变量发送到视图而不是一个一个地执行?

3 个答案:

答案 0 :(得分:2)

为简化您可以执行此操作

// BaseController
protected $data = array();

// Controller
$this->data = array(
    'variable' => $variable, 
    // ...
);

return View::make('example', $this->data);

但我不认为有更简单的方法或我不知道。

答案 1 :(得分:2)

您可以执行以下操作...

return view('cpe.edit', get_defined_vars());

如果您要创建许多在视图中不需要的变量,可能会有一些不必要的开销。

答案 2 :(得分:0)

您可以使用数组将所有变量发送到视图。