我已经开始学习PHP Laravel了,我正在努力解决一些问题(可能非常简单)。当我渲染页面时,我看到以下错误:
BladeCompiler.php第584行中的ErrorException:未定义的偏移量:1
控制器
位于\ App \ Http \ Controllers \ CompanyController.php
namespace App\Http\Controllers;
use App\Company;
use Illuminate\Http\Request;
class CompanyController extends Controller
{
function index()
{
$companies = Company::all();
// return $companies;
return view('public.company.index', compact('companies'));
}
}
查看
位于\ App \ resources \ views \ public \ company \ index.blade.php
@extends('public.layout')
@section('content')
Companies
@foreach $companies as $company
{{ $company->title }}
@endforeach
@stop
当我在控制器中取消注释return $companies
时,我确实有结果,但是......我不确定为什么我的 - 非常简单 - 视图不呈现。谁可以帮助我?
答案 0 :(得分:5)
错误指出在编译刀片文件时可能由于语法错误而出现问题。 因此,只需将foreach变量包装在paranthesis中,问题就应该解决了。
@extends('public.layout')
@section('content')
Companies
@foreach ($companies as $company)
{{ $company->title }}
@endforeach
@stop
答案 1 :(得分:1)
这让我发疯。问题是我在注释的代码中加入了以下内容:
// Never ever should you have a @ in comments such as @foreach
// The reason is the blade parser will try and interpret the @directive
// resulting in a cryptic error: undefined index 1
我希望这对某人有帮助。花了太多时间注释掉我所有的@foreach代码中的 ,才发现最初是导致问题的注释中的指令。
答案 2 :(得分:0)
检查$companies
是否已设置。
@extends('public.layout')
@section('content')
@if(isset($companies))
Companies
@foreach $companies as $company
{{ $company->title }}
@endforeach
@else
{{-- No companies to display message --}}
@endif
@stop