Как отличить две строки в Laravel и передать их в представление? - PullRequest
0 голосов
/ 06 мая 2020

Я запускаю небольшую вики-службу, где пользователи могут изменять некоторые столбцы для старых игр NES и SNES. И я веду учет всех изменений. И в течение некоторого времени я смотрел, как stackoverflow представляет изменения и правки, и это выглядит действительно круто и, вероятно, идеально подходит для моего проекта!

Я нашел эту статью из 2018 , которая делает функцию и представить данные действительно красивым способом, вроде stackoverflow. Но я не могу понять, как реализовать это в Laravel 7.7.1 ...

Что я сделал до сих пор:

  1. Добавьте новую папку с именем Helpers в app -папка.
  2. Создать Helper.php
  3. Автозагрузить Helper.php -файл, добавив к composer. json

    , "files ": [" app / Helpers / Helper. php "],

  4. Добавьте следующее к Helper.php:

    <?php
    
    function get_decorated_diff($old, $new){
    $from_start = strspn($old ^ $new, "\0");        
    $from_end = strspn(strrev($old) ^ strrev($new), "\0");
    
    $old_end = strlen($old) - $from_end;
    $new_end = strlen($new) - $from_end;
    
    $start = substr($new, 0, $from_start);
    $end = substr($new, $new_end);
    $new_diff = substr($new, $from_start, $new_end - $from_start);  
    $old_diff = substr($old, $from_start, $old_end - $from_start);
    
    $new = "$start<ins style='background-color:#ccffcc'>$new_diff</ins>$end";
    $old = "$start<del style='background-color:#ffcccc'>$old_diff</del>$end";
    return array("old"=>$old, "new"=>$new);
    }
    
  5. В GameController, попытка перебрать старые и новые значения и отредактировать их с помощью новой функции get_decorated_diff() -helper.

    public function show(Game $game)
    {
    $game->load(['releases','history' => function($q){
        return $q->with('user');
        }
    ]);
    
    $diff = $game->history->each(function($history, $key){
        get_decorated_diff($history->changed_value_from, $history->changed_value_to);
    });
    
    return view('game.game', compact('game'));
    }
    
  6. Ошибка получения из четвертой строки (4) in Helper.php ($from_start = strspn($old ^ $new, "\0");)

    ErrorException Обнаружено нечисловое c значение

Что я делаю не так?

ожидаемый результат

Я пытался прочитать функцию Laravel each() и, возможно, неправильно ее понял. Но было бы здорово, если бы эти значения просто отредактировали и вернули в представление. Или мне что-то не хватает?

...