因為還有其他地方會通過 app()
來取得實例,dd()
會顯示結果並直接終止系統,照你這情況應該是最先調用到 path.storage
,並不一定是你寫的,可能是系統裡面就有做調用,沒猜錯應該是 Log
的前置處理。
@Peter_Yuan_辉 可以在說得清楚些嗎?因為你最上面文中已經說出了為啥會這樣跳的原因了。
app()
這個方法算是 Laravel
這邊提供一個比較方便操作 Container
的方式,放在 helper
中並暴露給全局,其實你直接跳過 app()
使用 Container::getInstance()->make()
也是一樣的操作
這個有個簡潔的方法可以讓你提交整個 Form
主要是利用 FormData
其實可以直接丟一個 Form
進去,他會自動處理那些欄位。
jsFiddle
裡面vue-resource部分註解掉了,你可以透過console看一下轉換成果,要注意的是 FormData
不能直接 console.log
, 必須透過 FormData.entries()
取得 iterator
,進行迭代才能顯示裡邊的 key/value
。
還有一點是我把 submit
綁定到 form
上時用了修飾符 submit.prevent="submit"
, 這樣是會直接幫我們 event.preventDefault()
,比較方便。
<div id="main">
<form @submit.prevent="submit">
姓名
<div class="field">
<input name="name" type="text">
</div>
性別
<div class="field">
男<input name="gender" type="radio" value="male">
女<input name="gender" type="radio" value="female">
</div>
<input type="submit" value="送出">
</form>
</div>
new Vue({
el: '#main',
methods: {
submit: function(event) {
// FormData支援把 Form 元素丟進去
var formData = new FormData(event.target)
this.$http.post('/path/to', formData, function (data, status, request) {
// Success
}).error(function (data, status, request) {
// Error
});
}
}
})
使用 iframe
反而更消耗資源,因為iframe外你使用的 css
, js
等等都不會影響到 iframe
裡面的東西,變成你必須各自讀取一次,再者還有其他 SEO
之類的問題,你不會想用 iframe
的 XD
你應該把精力放在壓縮各種資源文件,或是架構上的良好設計~
@JellyBool
其實可以不用透過 v-el
,因為觸發事件時就會把觸發的元素傳進來 :P
upload: function(e) {
var files = e.target.files
// 同上
}
這樣做的另一個好處是可以共用邏輯
@v1tal
你再傳資料給前端時,就必須預先把一些敏感性資料給篩選掉,例如你的 User
,就應該只傳 name
、 email
等欄位,不該出現 password
,這部分可以很方便的在 Model
裡面的 $hidden
做設置,這是 Laravel 在序列化時,會略過的欄位,其實如果你是用預設的會員系統,就可以發現裡面已經幫你隱藏掉了。
這是浮點數運算的老問題了,不只 PHP
,其他語言也有同樣的問題,實際原因講起來太長,可以參考:http://blog.dcview.com/article.php?a=VmhQNVY%2BCzo%3D
但是我們可以靠 number_format
來進行四捨五入:
// 第二個參數是取到小數第幾位
number_format(18784.4-18785, 1)
// => -0.6
首先你給 Vue
的資料必須已經是把所有關連加載好的,因為 Laravel
是靠 Blade
來渲染樣板,會預先處理完所有變量或是 @foreach
這些操作,所以你傳一個 Model
給 View
,他還能直接在樣板中做關聯查詢,但是 Vue
不能,Javascript是在瀏覽器上處理,你傳給他什麼資料,他就只能照那資料顯示,不能透過 $article->user->name
這種方式去做關聯查詢,所以粗略流程是這樣
Blade -> Vue -> 原生Html
而關聯查詢只能在 Blade
以前處理,所以你必須先加載好所有要關聯的資料,也就是 Eager loading
。
可以用這種方式預先加載 User
// 取得全部 Article ,同時載入 User
Article::with('user')->get();
<div class="article" v-for="article in articles">
<div class="user">{ article.user.name }</div>
<div class="body">{ article.body }</div>
</div>
用了100%的腦域試著空想排版你的源碼後:
你不能直接對著 all()
call Model
裡面定義的方法
// 因為ReservationDetail::all()回傳的是 Collection
ReservationDetail::all()->belongsToReservation()
如果要預先載入關聯的話請用 wtih
,with
裡面要打你關聯用的 method
,所以整個來講應該是這樣
class Reservation extends Model {
protected $table = 'dbo.Reservation';
public function reservationDetails() {
return $this->hasMany('App\Models\ReservationDetail', 'ReservationID', 'ReservationID');
}
}
class ReservationDetail extends Model {
protected $table = 'dbo.ReservationDetail';
public function reservation() {
return $this->belongsTo('App\Models\Reservation', 'ReservationID', 'ReservationDetailID');
}
}
public function showByReservationNo($reservation_no) {
$reservationDetails = ReservationDetail::with('reservation')
->where('ReservationNo', '=', $reservation_no)
->get();
return $reservationDetails;
}
@perfectboook
試了下好像是正常的...
不過這邊忘記加 name
了
<input type="text" value ="{ old('name') }" class="form-control input-sm">
應該是
<input name="name" type="text" value ="{ old('name') }" class="form-control input-sm">
@freelsnamn
嗯...這邊提幾個建議,PHP的變量名或者是數組的索引,資料庫的表名、字段名,盡量盡量不要用中文,可以避免掉很多不預期錯誤,想想如果換個非GBK環境,解析上很容易出錯。
就你的業務邏輯來看
DB::transaction(function () use ($db,$accountDocuments,$orderId,$update) {
DB::connection($db)->table('财务记账表')->insert($accountDocuments);
// 這邊會有兩種情況
// 找到資料並更新
// 找不到資料且也不更新 ( 這部分並不會產生任何錯誤 )
DB::connection($db)->table('订单表')->where('订单id', $orderId)->update($update);
});
所以並不會有回滾情況產生