Tomoe

573 经验值

代碼中有常量嗎?

constant XXX = 'xxx'

之類的

或你乾脆改成

Route::post('infoclass/up', 'InfoclassController@up');

然後在裡面用 request 去取得 id


$request->get('id')

data 裡面寫也沒用,你現在是用 post 方式提交,data 是會被包進 body 裡面,不會在網址上自動補參數,所以你網址沒給後面的 {id} ,是永遠匹配不到這段路由

Route::post('infoclass/up/{id}', 'InfoclassController@up');

你的 POST 路由是

infoclass/up/{id}

但你 ajax 卻是送出

infoclass/up

少了後面 id 參數,可能匹配到別的 GET 路由例如

Route::get('infoclass/up', ...........)

你是想要點 node 後,變成輸入框,輸入完畢按下 Enter 改變內容嗎?

@v1tal
看來你是用 v-for 來生成表格內容,這樣會產生一些問題,像是 Vue 有他自己內部 Dom 的監聽器,例如你用 v-for ,雖然看起來是普通的 Dom ,但是已經被記錄起來並持續偵測綁定資料使否改變,但是問題在於 DataTable 的運作機制,當你改變資料,例如進行 排序換頁 等動作時 DataTable 會重新渲染裡面的 Dom ,造成原本那些有著監聽機制的 Dom 給被洗掉,這樣整個會亂套。

最好的方式還是照著 Vue 原本的思路走,我是把 DataTable 給包在 Component 裡面,並用 props 來傳遞資料,這裡有個我寫的小小範例:
jsFiddle 線上範例


const MOCK_DATA = {
    head: [
        {title: 'ID'}, 
        {title: '標題'}
    ],
    body: [
        [1, '測試資料1'],
        [2, '測試資料2'],
        [3, '測試資料3'],
        [4, '測試資料4'],
        [5, '測試資料5'],
        [6, '測用資料6'],
    ]
}

Vue.component('data-table', {
    props: ['head', 'data'],
    template: '<table></table>',
    data() {
        return {
            instance: null
        }    
    },
    watch: {
        data: function(newData) {
            if(this.instance) {
                this.instance.clear();
                this.instance.rows.add(newData);
                this.instance.draw();
            }
        }
    },
    ready() {
        this.instance = $(this.$el).dataTable({
            columns: this.head,
            data: this.data
        }).api()
    }
})

new Vue({
    el: '#app',
    data() {
        return {
            list: null
        }
    },
    methods: {
        fetch() {
            setTimeout(() => {
                this.list = MOCK_DATA
            }, 500)
        },
        addMockData() {
            let id = this.list.body[this.list.body.length - 1][0] + 1
            this.list.body.push([
                id,
                `測試資料${id}`
            ])
        }
    },
    
    ready() {
        this.fetch()
    }
})

@Alex
Comment.php 裡忘記 return 了.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    protected $fillable = ['body','user_id','discussion_id'];
    public function user()
    {
        // 這裡要 return
        return $this->belongsTo(User::class);
    }

    public function discussion()
    {
        // 這裡也是
        return $this->belongsTo(Discussion::class);
    }
}

@mumuliang 很不幸的,這真的是正常的 XD
ide_helper 是為了解決 IDE 無法自動提示 Facade 的方法而出來的工具
因為 Facade 是利用特殊方式去呼叫本來不是靜態的方法,你可以想像為 PHP 的魔術方法,主要實現原理可以看我寫的文章
所以提示找不到靜態方法是正常的

你有下載官方的homestead包嗎?

vagrant up 要在 Homestead 資料夾下執行

單純猜測會不會是 Chrome 上裝的套件導致?
例如 AdBlock