Что вызывает ошибку этой статьи статьи Laravel и JavaScript?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Что вызывает ошибку этой статьи статьи Laravel и JavaScript?

Сообщение Anonymous »

Я работаю над приложением блогов (ссылка на github Repo) в Laravel 8.
Я собрал способ добавления и редактирования тегов в статьи. /> < /p>
Я столкнулся с ошибкой, причина и решение, я не смог найти: обновление списка тегов статьи не удалось после удаления одного или нескольких (но не всех) тегов. Напротив, если я только выберите новые теги, операция обновления работает нормально.
В контроллере ArticleController у меня есть методы редактирования и обновления статьи:

Код: Выделить всё

public function edit($id)
{
$article = Article::find($id);
$attached_tags = $article->tags()->get()->pluck('id')->toArray();

return view(
'dashboard/edit-article',
[
'categories' => $this->categories(),
'tags' => $this->tags(),
'attached_tags' => $attached_tags,
'article' => $article
]
);
}

public function update(Request $request, $id)
{
$validator = Validator::make($request->all(), $this->rules, $this->messages);

if ($validator->fails()) {
return redirect()->back()->withErrors($validator->errors())->withInput();
}

$fields = $validator->validated();
$article = Article::find($id);

// If a new image is uploaded, set it as the article image
// Otherwise, set the old image...
if (isset($request->image)) {
$imageName = md5(time()) . Auth::user()->id . '.' . $request->image->extension();
$request->image->move(public_path('images/articles'), $imageName);
} else {
$imageName = $article->image;
}

$article->title = $request->get('title');
$article->short_description = $request->get('short_description');
$article->category_id = $request->get('category_id');
$article->featured = $request->has('featured');
$article->image = $request->get('image') == 'default.jpg' ? 'default.jpg' : $imageName;
$article->content = $request->get('content');
// Save changes to the article
$article->save();

//Attach tags to article
if ($request->has('tags')) {
$article->tags()->sync($request->tags);
} else {
$article->tags()->sync([]);
}

return redirect()->route('dashboard.articles')->with('success', 'The article titled "' . $article->title .  '" was updated');
}
В представлениях \ Dashboard \ edit-article.blade.php У меня есть этот код, получивший PAT интерфейса, который касается тегов:

Код: Выделить всё

{{ __('Tags') }}



[i][/i]

[list]
[*]
Use [Ctrl] + [Click] to select one or more tags from the list

[/list]



@php $selectedTags = old('tags', $attached_tags) @endphp


@foreach ($tags as $tag)
id, $selectedTags) ? 'selected' : '' }}>
{{ $tag->name }}

@endforeach



in resources \ js \ tags.js , у меня есть:

Код: Выделить всё

const tagsList = document.querySelector(".tags-list")
const tagActions = document.getElementById("tagActions")
const tagSelector = document.getElementById("tags")
const tagToggler = document.getElementById("tagSelectorToggler")
if (tagSelector) {
var preSelectedTags = Array.from(tagSelector.options)
.filter((option) => option.selected)
.map((option) => option.text)
var selectedTags = new Set()
}

window.filterTags = (event) => {
var query = event.target.value
var availableTags = Array.from(tagSelector.options)

availableTags.forEach(function (option) {
if (!option.text.toLowerCase().includes(query.toLowerCase())) {
option.classList.add("d-none")
} else {
option.classList.remove("d-none")
}
})
}

window.toggleTagSelector = (event) => {
let tagActionsVisibility = tagActions.checkVisibility()
if (event.target.tagName !== "BUTTON" && event.target.tagName !== "SPAN") {
if (tagActionsVisibility) {
tagActions.style.display = "none"
tagToggler.classList.add("active")
} else {
tagActions.style.display = "block"
tagToggler.classList.remove("active")
}
}
}

window.renderTags = () => {
tagsList.innerHTML =
[...selectedTags]
.sort()
.map(
(tag) =>
`[*]            >${tag}
×
`,
)
.join("") ||
`[*]Use [Ctrl] + [Click] to select one or more tags from the list`
for (const option of tagSelector.options) {
option.selected = selectedTags.has(option.textContent)
}
}

if (preSelectedTags) {
window.addPreselectedTags = () => {
preSelectedTags.forEach(selectedTags.add.bind(selectedTags))
renderTags()
}
}

if (tagsList) {
tagsList.addEventListener("click", function (event) {
if (event.target.tagName !== "BUTTON") return
let tagToRemove = event.target.closest("LI").children[0].textContent
let optionToDeselect = Array.from(tagSelector.options).find((option) => {
return option.innerText == tagToRemove
})
optionToDeselect.removeAttribute('selected')
selectedTags.delete(tagToRemove)
console.log(selectedTags);
renderTags()
})
}

if (tagSelector) {
tagSelector.addEventListener("change", function () {
selectedTags = new Set(
Array.from(tagSelector.options)
.filter((option) =>  option.selected)
.map((option) => option.textContent),
)
renderTags()
console.log(selectedTags);
})
}

if (tagSelector) {
window.addPreselectedTags();
}
Если я нажимаю кнопку «Закрыть тега», а затем обновлю статью, она проигрывает all теги (не только удаленная).
Есть работающая скрипка здесь , с javascript и html.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... e-tags-bug
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Что вызывает ошибку этой статьи статьи Laravel и JavaScript?
    Anonymous » » в форуме Javascript
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Что вызывает ошибку этой статьи статьи Laravel и JavaScript?
    Anonymous » » в форуме Php
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Что вызывает ошибку этой статьи статьи Laravel и JavaScript?
    Anonymous » » в форуме Php
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Что вызывает ошибку этой статьи статьи Laravel и JavaScript?
    Anonymous » » в форуме Php
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Неспособность обновить теги статьи в приложении в блоге Laravel 8?
    Anonymous » » в форуме Php
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»