Tomoe

573 经验值

@newborn

如果我的理解沒錯誤,Controller可以直接注入Request,是因為Laravel內部本身其實有傳Request instance給action,只是它是寫好的,翻一下Illuminate\Routing\Router.php看一下就可以知道原理

所以如果你想要你的Service能處理一些Controller的事情,還是在Controller裡面分派參數給他會比較好

class UserController extends BaseController {

    function someAction(Request $request, MyService $service) {
        $service->someMethod($request)
    }

}

@dope2008

是的,加一行

"campaignUrl" => "自定義訊息"

@gcpark 加個QQ : -----------------
這樣比較快XDD

  • 改成auth()->check()試試

  • 根目錄/storage/framework/views/ 裡邊東西全刪光

@gcpark Auth::check()改成\Auth::check()試試

@gcpark 再麻煩貼上create視圖的code~

@gcpark 可否將你routes和controller文件貼上來,這錯誤應該是程式有地方出錯

@gcpark 雖然不太可能,但還是想問問,是少打一個 : 嗎?


// O
Auth::check();

// X
Auth:check();

不然可以貼一下錯誤訊息

@saybye720 實際上就是 _token 的問題沒錯,User表update沒錯是因為其更新流程和UserProfile不一樣:

User是繼承於Model,其update方法是

    public function update(array $attributes = []){
        if (! $this->exists) {
            return false;
        }

        return $this->fill($attributes)->save();
    }

重點在於fill($attributes)這個方法會檢查傳進去的值是否fillable,就是你在User Model裡設置的那些

但是,$user->UserProfile()回傳的是HasOne類型的Object,其更新方法太多層,就不詳述,不過裡面並沒有對你傳進去的$attributes進行過濾,所以不管你fillable打什麼,都不會對他造成影響,最後導致你傳進去的所有欄位都會被更新,自然_token也被當成需要更新的欄位,而UserProfile並沒有這欄位也就錯誤了。

可以在Model中直接override原本的attributes

class User extends Model {

    protected $attributes = [
        'avatar' => 'DEFAULT_AVATAR',
    ];

    // something 
}