Laravel: переменная не передается от контроллера к просмотру - PullRequest
0 голосов
/ 16 ноября 2018

с использованием Laravel 5.6.28 мой маршрут в файле web.php выглядит следующим образом:

Route::get('kitysoftware/besttrades', 'SectorsController@besttradesview');

Мой контроллер с функцией bestrasdeview :

class SectorsController extends Controller
{
     public function besttradesview()
     {
        $sectors = DB::table('Sectors')->get();
          foreach ($sectors as $sector) {
            echo $sector->SectorName;  
           }
       //passing variable sectors1 to my view (is = $sector) 
      return view('besttradesview', ['sectors1' => $sector]);
      }}

Мойview Bestradesview.blade.php is:

<form method="GET">
<div class="selectsector">
<Select class="selectsector" name = "sectors">
<option value="{{ sectors1 }}"></option> 
<!-- test#2: <option value="{{ $sectors1->sector[] }}"></option> -->
<!-- test#3: <option value="{{ $sectors1->sector }}"></option> -->
</form>
</select>
  • И я получаю эту ошибку: Использование неопределенных константных секторов1 - предполагается, что «секторы1» (это приведет кОшибка в будущей версии PHP)
  • При тестировании строки комментария № 2 вместо этого я получаю еще одну ошибку: Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_UNKNOWN) Невозможно использовать [] для чтения

  • При тестировании строки комментария № 3 без [] я получаю еще одну ошибку: Использование неопределенных константных секторов1 - предполагается, что «секторы1» (это приведет кОшибка в будущей версии PHP)

Возможно, это довольно просто, но это сводит меня с ума, потому что я не понимаю, почему переменная не передается в представление.Я знаю, что он читает мою таблицу, потому что, если я удаляю последнюю возвращаемую строку вызова на моем контроллере, она отображает все значения из моего SectorName столбца, но я хочу его выбратьвыпадающее меню.

Я без удачи читаю документы, форумы и смотрю видео с ларакастами.Любое понимание или просто указание мне, где научиться правильному синтаксическому решению, будет оценено.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Похоже, вы пытаетесь заполнить опции выбора из запроса.Если это так, ваш цикл находится не в том месте.

Выньте цикл из метода контроллера и передайте коллекцию $sectors непосредственно в представление.

public function besttradesview()
{
    $sectors = DB::table('Sectors')->get();
    return view('besttradesview', ['sectors1' => $sectors]);
}

ЗатемЦикл в представлении для вывода параметров.

<select class="selectsector" name="sectors">
    @foreach($sectors1 as $sector)
        <option>{{ $sector->SectorName }}</option>
    @endforeach
</select>

Я предположил, что вам нужен текст в опции.Если вы используете имя сектора в качестве текста параметра, оно также будет использоваться в качестве значения параметра по умолчанию.Если вы хотите использовать что-то другое для значения, это будет выглядеть так, например:

<option value="{{ $sector->id }}">{{ $sector->SectorName }}</option>
0 голосов
/ 16 ноября 2018

Изменение,

return view('besttradesview', ['sectors1' => $sector]);

Кому,

 return view('besttradesview', ['sectors1' => $sectors]);

Обратите внимание на s в $sectors ($sectors = DB::table('Sectors')->get();) и в фактическом представлении оно должно быть $sectors1 не просто sectors1.

Вам также необходимо пройти через реальный сектор:

@foreach ($sectors1 as $sector)
    <option>{{ $sector->SectorName }}</option>
@endforeach

Кроме того, я бы определенно предложил создать модель для вашей таблицы Sectors, а не использоватьDB:: фасад.Вы должны использовать M в M VC.

...