2016-03-01 70 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

相關問題