Laravel错误:试图获取非对象

时间:2016-03-01 01:54:01

标签: php laravel

我正在开发一个项目,以便更好地处理Laravel 5.2。该项目是一个简单的应用程序,它从SQL数据库中引用并将其显示给用户。用户有一个输入字段,用于输入答案。如果用户的输入与作者姓名匹配,则他会收到通知,并且他的分数增加1,并显示下一个问题。如果答案不正确,他会显示正确的答案,并显示下一个问题。

错误是指我的刀片模板页面中的这行代码:

@if(Session::has('index'))
           {{ $i = Session::get('index')}}

            <h3 class="text-center">" {{$quotes[$i]->quote}} " </h3>

                {{$currentId = $quotes[$i]->author_id}}


            @endif

如果我要自己渲染$i,就像这样:{{$i}},我得到正确的数值。

以下是控制器中负责设置会话变量的代码:

if (!$request->session()->has('index')) {
            $index = 1;     
            $request->session()->set('index', $index);      
        } else {
            $index = $index + 1;
            $request->session()->set('index', $index);
        }

Edit1 :$ quotes数组工作正常,如果我选择了一个数字,就像在 $ quotes [0] - &gt;引用,我得到正确的字符串。

Edit2 :提供有关问题的背景信息。见上文。

1 个答案:

答案 0 :(得分:1)

我会尝试这样的事情。这在视图本身中没有逻辑,而是在我相信它属于的控制器中。

<强>控制器:

public function show() 
{
    if (!$request->session()->has('index')) {
        $index = 1;     
        $request->session()->set('index', $index);      
    } else {
        $index = $index + 1;
        $request->session()->set('index', $index);
    }
    $quote = Quote::getById($index); //make this method

    return view('quote', compact('quote'));
}

然后在你看来:

        <h3 class="text-center">" {{$quote->quote}} " </h3>

        {{$currentId = $quote->author_id}}

您的报价模型会执行以下操作:

public function getById($id)
{
    return Quote::find($id);
}

我认为最好将任何业务逻辑排除在您的视图之外,并将其放在您的控制器或模型本身中。您还可以创建一组quote类来处理如何处理引号。