【发布时间】:2017-03-20 20:58:01
【问题描述】:
我在将数据从 Controller 推送到 View 时遇到困难。下面是我的代码脚本。
我使用artisan 创建了我的控制器ListController
php artisan make:controller ListController
ListController - 显示方法
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ListController extends Controller
{
public function listNames()
{
$names = array(
'Daenerys Targaryen',
'Jon Snow',
'Arya Stark',
'Melisandre',
'Khal Drogo'
);
return view('welcome', ['names' => $names]);
}
}
创建了一个视图welcome.blade.php(默认)
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">API DOCUMENTATION</div>
<div class="panel-body">
@foreach ($names as $n)
<p>{{$n}}</p>
@endforeach
</div>
</div>
</div>
</div>
</div>
@endsection
然后,为其添加适当的路由(routes.php)
<?php
Route::get('/', 'ListController@listNames');
运行php artisan serve后打开localhost:8000时,抛出异常
ErrorException in 56f6d37e6c39b528e3f5a170141b734befe0f7a2.php line 14:
Undefined variable: names (View: /Applications/MAMP/.../views/welcome.blade.php)
到目前为止,我已经尝试了以下方法: 在控制器中:
return view('welcome', compact('names')); --> DOESN'T WORK
return view('welcome', $names); --> DOESN'T WORK
return view('welcome')->with($names); --> DOESN'T WORK
return view('welcome')->with('names', $names); --> DOESN'T WORK
在视图中对数组进行硬编码并为其分配一个变量是可行的
<?php $names = array('John Snow', 'Arya Stark');?>
<?php foreach ($names as $n):?>
<tr>
<td><?php echo $n;?></td>
</tr>
<?php endforeach;?>
我似乎无法发现问题。任何帮助表示赞赏。
【问题讨论】:
-
你为什么不在刀片视图中使用刀片?
-
这是非常随机的,但是您在任何地方都没有重复的项目吗?这只是您的错误状态,您的文件位于 MAMP 目录中,但您仍在使用 php artisan serve 命令,如果您正在运行 MAMP,您实际上不需要使用该命令。可能是一个很长的镜头,但我想我会问
-
是的,我不需要使用
php artisan serve,而且我确实有其他项目在 MAMP 上运行。但是,它只是让工匠让我的生活更轻松:)