2016-03-01 8 views
2

Я работаю над проектом, чтобы получить лучшую ручку Laravel 5.2. Проект представляет собой простое приложение, которое берет цитату из базы данных SQL и отображает ее пользователю. У пользователя есть поле ввода, где он вводит свой ответ. Если вход пользователя совпадает с именем автора, он получает уведомление, а его счет увеличивается на единицу, и отображается следующий вопрос. Если ответ неверен, ему будет показан правильный ответ, и на экране появится следующий вопрос.Ошибка 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 ] -> quote, я получаю правильную строку.

Редактировать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

Смежные вопросы