передача значения в блейд без использования foreach

#laravel #eloquent #laravel-blade

#laravel #красноречивый #laravel-блейд

Вопрос:

я пытаюсь получить значение одной строки, используя его ключ’ в таблице файлов блейда. как передать ему значение. я извлек всю таблицу из другого блейд-файла, используя foreach

я передал данные со своего контроллера, но он их не распознает.

loaninterest.blade.php

 <div class="col-md-12">   
<table class="table table-stripped">
<thead>
  <tr>   
  <th>Loan Id</th>
  <th>Member</th> 
  @for($i=0;$i<$loan->duration; $i   )
  <th>installment</th>
  @endfor
</tr>
<tr>
  <td>{{  $key}}</td>
  <td>{{$loan->member->name}}</td>
 @for($i=0;$i<$loan->duration; $i   )
 <td> {{$loan->interest_amount}}  </td>
 @endfor
</tr>
  </thead>
  </table>
 </form>
        </div>
 

LoanController.php

   public function loanInterest(){
    $loanData = Loan::all();
    //$findUser =Loan::findOrFail($criteria);
    return view($this->_pagePath.'loan.loaninterest',compact('loanData'));
} 
 

web.php

  Route::any('loaninterest/{criteria?}','LoanController@loanInterest')-> name('loaninterest');
 

я вызвал файл блейда loaninterest, как показано ниже

loan.blade.php

    <td>
    <a href="{{route('loaninterest').'/'.$loan->id }}">Interest detail</a> 
  </td>
 

как мне передать loanData в блейд. я получаю эту ошибку

 Undefined variable:loan   
 

Ответ №1:

Почему вы передаете URL-адрес при использовании route

 <a href="{{route('loaninterest', $loan->id) }}">Interest detail</a> 

public function loanInterest(){
        // $loanData = Loan::all();
        $loanData =Loan::findOrFail($criteria); // or your where condition
        return view($this->_pagePath.'loan.loaninterest',compact('loanData'));
} 
 

В контроллере вы запрашиваете все данные из таблицы, но вам нужны только одни данные, поэтому вам нужно findOrFail использовать уникальный идентификатор или использовать firstOrFail .

Попробуйте с этим.

Надеюсь, это поможет 🙂

Комментарии:

1. я внес изменения, предложенные в loan.blade.php , я использовал route, так как я передавал значения через функцию контроллера. ошибка та же.

2. да, я изменил его, но мне все равно нужно вызвать его из файла blade, верно?? например, {{$loanData }} или что-то в этом роде. ошибка та же.

3. вам просто нужно вызывать только ваши столбцы данных, например {{ $loanData->something }}

4. это сработало, спасибо. я просто копировал коды и облажался.

Ответ №2:

Параметры маршрута отправляются в отдельном массиве попробуйте приведенный ниже синтаксис кода

   route('routename', [parameter1, paramater2])
 

проверьте документы

вы можете попробовать

 <a href="{{route('loaninterest', ['load' => $loan->id]) }}">Interest detail</a> 
 

для отображения данных ссуды в представлении

  public function loanInterest(){
    $loanData = Loan::all();
    return view($this->_pagePath.'loan.loaninterest', compact('loanData')); //verify if $this->pagePath etc is correct
} 
 

В поле зрения

 @foreach ( $loanData as $loanDeta )
    {{ $lanData->interest_amount }}
@endforeach
 

Комментарии:

1. требуется ли вызывать его из блейд-файла, аналогичного @foreach($loanData как $key при извлечении всех данных

2. @PrithviTuladhar для создания параметра URL-адреса маршрута это код для обхода коллекции, да, вы можете использовать @foreach @for теги или блейд, в зависимости от ваших требований. вы можете повысить его, если это будет полезно для вас.

3. я думаю, это даст проценты по всем кредитам. вот почему я не использовал @foreach в первую очередь. в любом случае, спасибо, я обнаружил свою ошибку.