【问题标题】:How do I toggle a boolean value with a button?如何使用按钮切换布尔值?
【发布时间】:2017-01-31 09:10:42
【问题描述】:

我有一张表格,其中列出了一些任务,并有一列显示它们是否已完成。我添加了一个按钮来切换“已完成”列,但我似乎无法获得我选择更新的行。谁能告诉我哪里出错了?

我已经创建了路由、按钮和方法,这一切似乎都可以工作,但数据库没有更新(现在我只有将“已完成”列更改为 1 的代码)。

路线:

Route::patch('tasks/complete/{id}', 'TaskController@updateCompleted');
Route::resource('tasks' , 'TaskController');

视图中的按钮:

{{ Form::open(array('action' => array('TaskController@updateCompleted', $task->id))) }}
    {{ Form::hidden('_method', 'PATCH') }}
    {{ Form::submit('Completed?', array('class' => 'btn btn-danger')) }}
{{ Form::close() }}

控制器:

public function updateCompleted($id)
{

    $task = Task::findOrFail($id);

    $task->completed == 1;

    $task->update();

    Session::flash('message', 'Task updated!');
    return redirect('tasks');

}

谢谢!

【问题讨论】:

  • public function updateCompleted($id)... 尝试返回$id 看看到底返回了什么
  • 返回 $id 为我单击按钮所在的行提供了正确的 id 值。 Flash 消息显示,页面重定向,但 $task->completed == 1; $task->update(); 似乎没有做任何事情......
  • 你应该写save而不是update
  • 感谢您的建议,但我已经尝试过了,但没有任何区别。
  • 你又犯了一个错误:$task->completed == 1;。仅使用 2 中的一个。$task->completed = 1;

标签: laravel laravel-5


【解决方案1】:

正如@rashad 指出的那样,您需要使用单个= 来设置completed 而不是== 的值。

= 是一个 assignment 运算符,因此用于 tgo assignset 一个值。

== 是一个相等运算符,因此用于比较值以查看它们是否相同。

然后您需要拨打save() 而不是update()

下面是工作代码:

public function updateCompleted($id)
{

    $task = Task::findOrFail($id);

    $task->completed = 1;

    $task->save();

    Session::flash('message', 'Task updated!');
    return redirect('tasks');

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-02
    • 2015-10-02
    • 2012-07-21
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多