Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 29.02.2016 20:35:42

Laravel blade for перебор массива

Всем привет. Столкнулся с глупой проблемой.
Нужно перебрать массив с помощью цикла for.
Не нужно говорить "Используй foreach он молодец". Мне нужно перебрать массив именно с помощью for.

Я пробовал так:

@for($i = 0; $i < count($dats); $i++)
      {{ $dats['$i'] }}
@endfor

Но увы получил ошибку следующего вида:

Undefined index: $i (View: /var/www/shop.com/resources/views/home.blade.php)

Самое интересное, что если запросить элемент массива, все выводит нормально.

{{ $dats['0'] }}

Объясните может ли blade вообще с этим справиться?

Не в сети

#2 29.02.2016 20:56:00

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: Laravel blade for перебор массива

Ковычки уберите

@for($i = 0; $i < count($dats); $i++)
      {{ $dats[$i] }}
@endfor

If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#3 01.03.2016 00:22:34

Re: Laravel blade for перебор массива

Artdevue пишет:

Ковычки уберите

@for($i = 0; $i < count($dats); $i++)
      {{ $dats[$i] }}
@endfor

Было бы все так просто. Теперь получаем другую ошибку.

htmlentities() expects parameter 1 to be string, object given (View: /var/www/shop.com/resources/views/home.blade.php)

Не в сети

#4 01.03.2016 01:07:34

Re: Laravel blade for перебор массива

Какие я только варианты не пробовал, проблема остается прежней.

@for($i = 0, $size = count($dats); $i < $size; $i++)
        {{ $dats[$i] }}
@endfor
    <?php for($i = 0; $i < count($dats); $i++) : ?>
        <?php echo $dats[$i]; ?>
    <?php endfor; ?>

Не в сети

#5 01.03.2016 01:29:13

duster
Откуда: Мельбурн
Сообщений: 148

Re: Laravel blade for перебор массива

PHP
@for($i 0$i count($dats); $i++)
      {{ 
$dats[$i] }}
@endfor

или

PHP
@foreach($dats as $one)
      {{ 
$one }}
@endforeach

Не в сети

#6 01.03.2016 02:39:40

Re: Laravel blade for перебор массива

duster пишет:

}%%%(php)
@for($i = 0; $i < count($dats); $i++)
      {{ $dats[$i] }}
@endfor
%%

или
%%(php)
@foreach($dats as $one)
      {{ $one }}
@endforeach
%%

Мне нужен for а не foreach.
И ваш пример с for идентичен тому что я написал выше.
Соответственно это не работает и ошибки я указал.
По прежнему нуждаюсь в помощи.

Не в сети

#7 01.03.2016 05:02:23

duster
Откуда: Мельбурн
Сообщений: 148

Re: Laravel blade for перебор массива

Fixlix пишет:

Мне нужен for а не foreach.
И ваш пример с for идентичен тому что я написал выше.
Соответственно это не работает и ошибки я указал.
По прежнему нуждаюсь в помощи.

Не идентичен - у Вас там странная кавычка была какая-то.

А потом у Вас ошибка изменилась и она Вам все объясняет:
htmlentities() expects parameter 1 to be string, object given (View: /var/www/shop.com/resources/views/home.blade.php)

$dats[$i] - это объект, а не строка, поэтому нельзя просто так взять и "вывести" в шаблоне его

Если Вам надо вывести конкретный property объекта - укажите его {{ $dats[$i]->name }}
Можете конвертировать объект в строку любым из доступных способов, к примеру в JSON: {{ json_encode($dats[$i]) }}

Но нельзя просто "напечатать" объект

Не в сети

#8 01.03.2016 13:49:51

Re: Laravel blade for перебор массива

duster пишет:
Fixlix пишет:

Мне нужен for а не foreach.
И ваш пример с for идентичен тому что я написал выше.
Соответственно это не работает и ошибки я указал.
По прежнему нуждаюсь в помощи.

Не идентичен - у Вас там странная кавычка была какая-то.

А потом у Вас ошибка изменилась и она Вам все объясняет:
htmlentities() expects parameter 1 to be string, object given (View: /var/www/shop.com/resources/views/home.blade.php)

$dats[$i] - это объект, а не строка, поэтому нельзя просто так взять и "вывести" в шаблоне его

Если Вам надо вывести конкретный property объекта - укажите его {{ $dats[$i]->name }}
Можете конвертировать объект в строку любым из доступных способов, к примеру в JSON: {{ json_encode($dats[$i]) }}

Но нельзя просто "напечатать" объект

Это то что я хотел. Спасибо!
Я просто до этого var_dump'ом пытался смотреть и он выдавало ошибку все равно. По этому я проблему не мог понять.
Вот рабочий вариант на помощь тем кто столкнется с этой глупой проблемой.

@for($i = 0; $i < count($dats); $i++)
        {{ $dats[$i]->title }}<br />
@endfor

Не в сети

Подвал раздела