Задать вопрос
@Racter
Делаю сайты "для души"!

Как уберечь ссылки в статье на сайте сделанном на Laravel от ошибки 404 после изменения роута или слага?

Приветствую!
Пилю тут сайтик на Laravel, и ситуация такая... На сайте есть блог, в блоге - статьи. В статьях по идее будут ссылки на другие статьи этого сайта.
Есть роуты типа
Route::get('/blog/{slug}', [
    'uses' => 'BlogController@show',
    'as' => 'blog.show'
]);

(т.е. ничего сверх стандартного функционала), slug беру из БД, из таблички вместе с id, текстом и т.п.)
Теперь... если в тексте статьи в блоге я впишу что-то типа
<a href="http://prophecy.local/blog/hallou" >мой анкор</a>

то все будет ок, но только до тех пор, пока не изменится либо роут (например, в роуте я заменю /blog/{slug} на /blog777/{slug}') либо слаг!
Можно, конечно, в статью впендюрить конструкцию типа
<a href="{{route('blog.show', ['post' => 'hallou'])}}">О сайте</a>

но она опять же не спасет, если изменится слаг! И еще не ясно - как конструкцию такого типа вставлять с простому пользователю.

В CMS типа Joomla этот вопрос как-то решен. Там через WYSIWYG редактор вставляется ссылка с id статьи, которая далее автоматом превращается в красивую человекопонятную ссылку. При этом ссылка обновляется при любом изменении слага или шаблона формирования ЧПУ.

Хотелось бы, чтобы также было бы и на моем сайте! Как это сделать?!
1. Наверное, надо как-то работать в первую очередь с id поста, а получать слаг. Это я даже могу сделать, написав метод в модели поста и использовав его при работе с роутом
route('blog.show', ['slug' => \App\Post::slugFromId(12)])

верный ли ход мыслей?! С такой конструкцией действительно не страшно изменение слага, и возможное небольшое изменение роута тоже проблемы не создаст.
2. Я бы может быть мог бы даже на вышеуказанной конструкции остановиться, но не ясно, как дать пользователю удобную возможность вставлять подобные ссылки через визуальный редактор статьи?!
  • Вопрос задан
  • 40 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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