Laravel – изменить и вернуть переменную из @include

Я включаю несколько шаблонов в цикле, используя

@include('template.included') 

Прежде чем включать этот шаблон, я определяю

 $page = 0; 

и внутри шаблона, несколько раз он вызывает

 $page++; 

Внутри включенного шаблона значение правильно увеличивается, но вне шаблона кажется, что переменная $ page остается прежней – она ​​похожа на @include, создает свою собственную копию каждого используемого вами var.

Мне нужна эта переменная $ page для обновления внутри этих шаблонов, и ее значение возвращается обратно к моему основному шаблону – я пропустил что-то простое?

Цените любые предложения!

РЕДАКТИРОВАТЬ:

Моя проблема, например:

 $page = 0; @include('template.included') //This calls $page++ 5 times echo $page; //returns 0 

Мне нужно $ page для возврата 4, а не 0

Related of "Laravel – изменить и вернуть переменную из @include"

Ваше предположение верно, система просмотра Laravel создает новую область для каждого загружаемого вида. Метод Illuminate\View\Factory::make() который используется при включении представлений, делает следующее:

 new View($this, $this->getEngineFromPath($path), $view, $path, $data) 

Он создает новое представление и передает ему данные, что фактически означает, что он отправляет копию информации. Поскольку аргументы не передаются по ссылке (которая устарела и в новых версиях PHP уже удалена), то, что вы хотите, не может быть выполнено.

При этом ваш подход кажется ошибочным. Мне кажется, что вы строите разбивку на страницы в представлении, что вам не следует делать. Laravel уже предлагает очень простой способ создания Pagination , вы должны, возможно, изучить это.