php - Laravel - 使用 onclick 从复选框提交表单

标签 php laravel

我在 Laravel 下有一个简单的任务列表项目。

当我单击复选框时,它不显示选中状态。 (第二项在数据库中处于真实状态,因此显示已选中。我无法取消选中此项)我在网上搜索了原因的答案,但找不到解决方案或原因。

代码:

home.blade.php(在 View 文件夹中)-

@extends('layouts.main')

@section('content')

<h1>Tasks</h1>

<ul>
@foreach ($items as $item)
    <li>
        {{ Form::open() }}
            <input type="checkbox" onClick="this.form.submit()" {{     $item->done ? 'checked' : '' }}>

            <input type="hidden" name="id" value="{{ $item->id }}">

            {{ $item->name }}
        {{ Form::close() }}
    </li>   
@endforeach
</ul>

@stop   

HomeController.php(在Controllers文件夹中)-

<?php

class HomeController extends BaseController {

public function getIndex() {
    $items = Auth::user()->items;

    return View::make('home', array(
        'items' => $items
    ));
}

public function postIndex() {
    $id = Input::get('id');
    $user_id = Auth::user()->id;

    $item = Item::findOrFail($id);

    if($item->owner_id == $userId) {
        $item->mark();
    }

    return Redirect::route('home');
}
}

Item.php(在模型文件夹中)-

<?php

class Item extends Eloquent {
public function mark() {
    $this->$done = $this->done ? false : true;

    $this->save();
}
}

routes.php-

<?php

Route::get('/', array('as' => 'home', 'uses' => 'HomeController@getIndex'))->before('auth');
Route::post('/', array('uses' => 'HomeController@postIndex'))->before('csrf');

Route::get('/login', array('as' => 'login', 'uses' => 'AuthController@getLogin'))->before('guest');  
Route::post('login', array('uses' => 'AuthController@postLogin'))->before('csrf');

最佳答案

在您的代码中,您永远不会更新模型的done值。我想,您想用 post 方法更改它。因此您需要从复选框名称中获取值(例如 Input::get('box-ID'))

您还可以使用表单类创建一个复选框:

// public function checkbox($name, $value = 1, $checked = null, $options = array())
{{ Form::checkbox('name', 'value', true, ['onClick' => 'alert(123)']) }}

引用:Formbuilder -> checkbox

关于php - Laravel - 使用 onclick 从复选框提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23331597/

相关文章:

php - 将 unicode 代码转换为 UTF-8

php - 保持表示 (HTML) 和逻辑 (PHP) 分离

javascript - 如何在 Vue.js 中传递 $router.push 中的数组?

mysql - Larval 离开加入 Eloquent 导致 id 字段被覆盖

php - 有没有办法非对称加密使用 Laravel Passport 创建的访问 token ?

php - Symfony 4 - 使用服务加密/解密理论中使用的字段?

php - 我可以假设 PHP 的 time() 和 MySQL 的 NOW() 是一样的吗?

javascript - jQuery 没有正常运行,立即打印警报

javascript - 在 Laravel 5.3 中动态更改图像

php - 有了这个 laravel sql 权限有什么好的解决方案吗?