Laravel, используя переменную из базы данных в пользовательской директиве blade

Итак, вы на самом деле вызываете API снова, вы просто не итерации по результатам.

$shouldProcess = true;
$searchIndex = 0;
$items = [];
while ($shouldProcess) {
    $processedThisLoop = 0;
    $function_call = getPROsitemapsEntries($searchIndex);
    $responseData = json_decode($function_call->getBody(), true);

    foreach($responseData['result']['entries'] as $entries) {
        $items[] = $entries;
        $searchIndex++;
        $processedThisLoop++;
    }

    if($processedThisLoop == 0) {
        // Didn't find any so stop the loop
        $shouldProcess = false;
    }
}

var_dump($items);

В приведенном выше коде мы отслеживаем общее количество записей, которые мы обработали в $searchIndex. Это позволит нам продолжать получать новые элементы вместо старых.

$shouldProcess - это bool, который будет определять, следует ли нам пытаться получить новые записи из API.

$items - это массив, в котором будут храниться все записи из API.

$processedThisLoop содержит количество записей, которые мы обработали в этом цикле, т. е. этот запрос к API имел записи для обработки? Если это не так, установите $shouldProcess в false, и это остановит цикл while.

3
задан Johnny 19 January 2019 в 18:30
поделиться

1 ответ

Blade кэширует возвращаемую строку вашей пользовательской директивы, но если эта строка является PHP-кодом, она будет оценена при доступе к кэшированному представлению. Что вы можете сделать, это включить всю условную логику в возвращаемую строку, например:

\Blade::directive('signup_done', function () {
    return "<?php if (\Auth::check() && \Auth::user()->signup_done) { ?>";
});

Возможно, это не лучшее решение, но оно должно работать.

0
ответ дан Amade 19 January 2019 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: