2016-03-01 74 views
2

我正在开发一个项目,以便更好地处理Laravel 5.2。该项目是一个简单的应用程序,它从SQL数据库中引用报价并将其显示给用户。用户有一个输入字段,输入他的答案。如果用户的输入与作者姓名相匹配,他会收到通知,并将他的分数递增1,并显示下一个问题。如果答案不正确,他会显示正确的答案,并显示下一个问题。Laravel错误:试图获取非对象的属性

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

@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:在$报价阵列工作正常,如果我是选择一个数字,在 $报价[0 ] - >引用,我得到正确的字符串。

编辑2:提供有关问题的背景信息。往上看。

+1

你在哪里设置'$ quotes' – Jeff

+0

嗨,请看看编辑(: – Frosty619

+0

)如果你使用你传递的确切数字作为索引,那么该怎么办?最终如果你传入的数字不是' t存在于引号内,你会得到这个错误 – mkaatman

回答

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类。

+0

我完全同意你关于分离业务逻辑但是你的解决方案并不能解决我的问题,这恐怕是因为我没有正确地解释它,如果可以的话,请看看我的更新后的帖子,感谢你抽出时间去解决这个问题。详细回复(: – Frosty619

相关问题