【发布时间】:2019-09-18 08:17:00
【问题描述】:
所以基本上我对我的任务有一个最喜欢的价值。它被命名为“最喜欢的”并且有一个布尔值,所以 1/true 或 0/false。 (mySQL)
目前,每一行(一个任务)都有一个字体真棒星,如果收藏为 1,它将与文本金色变为 fas,因此它会显示一个金色星。如果收藏为0,它会变远,这使它成为一个白色的星星,里面是空的。
<a href="#" class="del_link text-white"><i class="{{ $task->favorited ? 'text-gold fas' : 'far' }} fa-star"></i></a>
它有类del_link 触发一个javaScript/jQuery 函数。提交<a>父表单
$('.del_link').each(function(){
$(this).on('click', function(event){
$(this).parent().submit();
});
});
现在这是包裹在 <a></a> 周围的表单
<form method="post" action="{{ route('tasks.update', $task) }}">
@csrf @method('patch')
<input type="hidden" name="favorited" value="{{ $task->favorited ? 0 : 1 }}">
<a href="#" class="del_link text-white"><i class="{{ $task->favorited ? 'text-gold fas' : 'far' }} fa-star"></i></a>
</form>
所以基本上,如果收藏=== 1,则将收藏值设置为0,所以当我提交表单时,我将收藏值设置为0。现在由于某种原因这不起作用。每当我按下星号以便我可以收藏它时,它都会起作用,但是当我以相反的方式进行操作时,它会被取消收藏;它没有。
这是我的TaskController.php代码
public function update(Request $request, Task $task)
{
$task->update([
'favorited' => request()->has('favorited')
]);
return back();
}
其实上面的代码和方法是我从 Laravel 5.8 的草稿视频中得到的。 (Laracasts laravel 教程)
使用复选框而不是使用星号对我有用,但这种方式不起作用。
我尝试过使用冗长的 if 语句,如果 request 为 1,我会将其设置为 1。(request = 1 表示隐藏的输入为 1,因此不被收藏)和 else,所以如果 0 , 它会将其设置为 0 从而不喜欢它。
但在那种情况下,它仍然没有工作。我已经 dd 请求、任务和文本来告诉我我在哪里以及我得到了什么,但无济于事。
感谢您的帮助
【问题讨论】: