$file->next() not sortable / workaround

Seeing as $file->next() cannot be sorted, I am currently trying to figure out a workaround:

    $i = 1;
    foreach($page->images()->sortBy('sort', 'asc') as $image) {
    	$i++;
    	$block = "<div class='img_slide'>";

    	$block .= "<div class='img_slide_inner";
    	$block .= $image->position() ? " {$image->position()}" : "";
    	$block .= $image->sizing() ? " {$image->sizing()}" : "";
    	$block .= "' data-style='background-image: url(";
    	$block .= $image->url();
    	$block .= ")' data-caption='";
    	$block .= $image->caption();
    	$block .= "'></div>";

    	if($image->keepprev() == true) {
    		$order = $i - 1;
    		$prev = $page->images()->sortBy('sort', 'asc')->nth($order) ;
	    	$block .= "<div class='img_slide_inner_2";
	    	$block .= $prev->position() ? " {$prev->position()}" : "";
	    	$block .= $prev->sizing() ? " {$prev->sizing()}" : "";
	    	$block .= "' data-style='background-image: url(";
	    	$block .= $prev->url();
	    	$block .= ")' data-caption='";
	    	$block .= $prev->caption();
	    	$block .= "'></div>";
    	}

    	$block .= "</div>";
    	echo $block;
    }

However, this currently results in an error: Call to a member function position() on null

Any idea what Iā€™m doing wrong?

You can do something like this:

<?php
  $index = 0;
  $images = $page->images()->sortBy('sort', 'asc');
  foreach($images as $image) {
    echo $image->url();
    $next  = $images->nth($index+1);
    if($next) {
      echo $next->url();
    }
    $index++;
  }
?>
2 Likes