刀片返回未定义的偏移量。

8

我开始学习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后,我确实有了结果,但是......我不确定为什么我的非常简单的视图没有渲染。谁能帮帮我?

你确定你返回的集合中有列标题吗? - Vitalij
是的,这是一个愚蠢的语法错误。感谢您关注我的问题。 - meavo
3个回答

8
错误提示指出在编译Blade文件时可能发生了语法错误。因此,只需将foreach变量括在括号内即可解决问题。
@extends('public.layout')

@section('content')
    Companies
    @foreach ($companies as $company)
        {{ $company->title }}
    @endforeach
@stop

你真的让我开心,谢谢;我花了一个多小时寻找我的代码,知道它一定是一些微不足道的东西。我很确定我不会再忘记这个语法了 ;) - meavo

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在代码中注释掉,只发现最初导致问题的是注释中的指令。


1
这是 Blade 模板中一个非常愚蠢的缺陷。注释不应该被解析为逻辑。 - mopsyd

1

检查 $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

你为什么这么说?Compact是一个非常不错的PHP函数,用于将数据传递到Laravel视图。 - Vitalij
谢谢您的建议,但我想保持我的观点清晰并避免不必要的检查。这恰好是一个语法错误。感谢您关注我的问题。 - meavo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接