Как объединить переменную с именем поля базы данных в Laravel Blade? - PullRequest
0 голосов
/ 04 января 2019

Я использую локализацию laravel для переключения между двумя языками и динамического извлечения данных в соответствии с выбранным языком.имена полей базы данных name_en, detail_en на английском языке и name_pe, detail_pe на персидском языке, поэтому я хочу получить en and pe из сеанса и сохранить в переменную $lng, а затем объединить его с полем базы данных в блейд-файле.

  @php
    $lng = Session::get('local');
    // will return en or pe
    @endphp

@foreach ($products as $product)
<tr>
    <td>
        <input class="self_delall" id="self_delall" type="checkbox" name="delid[]" value="{{ $product->id }}"/>
    </td>
    <td>{{ ++$i }}</td>
    <td>{{ $product->name_.$lng }}</td>
    <td>{{ $product->detail_.$lng }}</td>
    <td>
        <a class="btn btn-info" href="{{ route('products.show',$product->id) }}">Show</a>
        @can('product-edit')
        <a class="btn btn-primary" href="{{ route('products.edit',$product->id) }}">Edit</a>
        @endcan

        @can('product-delete')
            <a class="btn btn-danger" href="delete/{{ $product->id }}/1">Delete</a>
        @endcan
    </td>
</tr>
@endforeach 

Таким образом, он возвращает только значение $lng вместо того, чтобы извлекать значение поля базы данных, вывод здесь: enter image description here

1 Ответ

0 голосов
/ 04 января 2019

Я думаю, проблема в том, как вы называете свойство объекта.Вы хотите получить name_en или name_pe из $product объекта.

Когда вы делаете $product->name_.$lng, в действительности PHP получает значение $product->name_, а затем добавьте его со значением в $ lng.В этом случае $product->name_ равен NULL, а $ lng равен en или pe , поэтому на выходе получается либо en , либо pe .

Итак, решение состоит в том, что вы должны изменить способ вызова атрибута с помощью $product['name_' . $lng] или подготовить переменную $column = 'name_' . $lng; $product->$column;, или вы можете сделать это $product->{'name_' . $lng}.

. Вы можетесм. операцию из этого поста .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...