我有一个带有自定义数据的json文件,一些游戏服务器的列表。 json文件包含名称和其他数据......
{
"gameServer1": {
"name": "game server",
"ip": "game.gameservers.com",
"port": "25565",
"about": "About this game server",
"nav": {
"navigationLink1": {
"name": "Forum",
"link": "gameserver.com/someurl"
}
}
// etc.. There would be quite a few other servers listed...
}
}
现在,在我的HomeController中(因为这是数据显示的地方)我很遗憾,我只有...
public function show()
{
$this->layout->content = View::make('home')->with('servers', $this->getServers());
}
public function getServers(){
$file = file_get_contents(app_path() . '/views/servers.json');
$servers = json_decode($file);
return $servers;
}
我很确定这是错的。我只是不知道如何正确地做到这一点。我需要做的是将属性传递给我的主视图
public function show()
{
$this->layout->content = View::make('home')->with($this->getJSON());
}
所以我可以预测结果,并提供类似的内容......
<div class="server">
<h3 class="server-name">{{n $name }}</h3>
<div class="ip-address">
{{ $ipaddress }}
</div><!-- /.ip-address -->
<div class="about-server">
{{ $about }}
</div><!-- /.about-server -->
<div class="server-nav">
<div class="nav-info">
<strong>Quick Links</strong>
</div>
<ul>
<li><a href="">{{links}}</a></li>
</ul>
</div>
etc....
</div><!-- /.server-container -->
我觉得我甚至都不知道如何做到这一点。怎么办?
答案 0 :(得分:1)
要将数据传递到您的视图,您应该在with
方法中指定一个名称,以便使用该名称,您将能够访问视图中的数据,例如,您现在拥有以下代码:< / p>
$this->layout->content = View::make('home')->with($this->getJSON());
您需要为变量传递名称(任何内容),如下所示:
$this->layout->content = View::make('home')->with('servers', $this->getJSON());
现在,您可以通过引用$servers
变量来访问视图中的数据。由于您的$servers
变量将包含stdClass
数组,因此您可以在视图中循环$servers
变量,如下所示:
<div class="server">
@foreach($servers as $server)
<h3 class="server-name">{{ $server->name }}</h3>
<div class="ip-address">
{{ $server->ip }}
</div>
<div class="about-server">
{{ $server->about }}
</div>
<div class="server-nav">
<div class="nav-info">
<strong>Quick Links</strong>
</div>
<ul>
@foreach($server->nav as $linkObj)
<li><a href="{{ linkObj->link }}">{{ $linkObj->name }}</a></li>
@endforeach
</ul>
</div>
@endforeach
</div>
每个{{ }}
都会打印$server->properties
对象中的stdClass
。这是Blade
模板的示例,当您调用它时:
$this->layout->content = View::make('home')->with('servers', $this->getJSON());
框架在app/views/home.blade.php
中查找视图,因此请确保您已在home.blade.php
文件夹中创建了app/views
视图文件。这只是一个简单的想法,但您需要read the documentation。