2013-03-04 129 views
0

我使用Laravel的雄辯,大部分時間沒有任何問題。但現在我遇到了一個問題,似乎無法解決它。谷歌不拿出一個解決方案...Laravel雄辯輸出c

$global_data['credentials']  = Company::find(Auth::user()->company_id)->credentials()->first(); 

View::share('data', $global_data); 

在公司模型的關係:

public function credentials(){ 
    return $this->has_one('credentials'); 
} 

憑據回聲「C」到每一頁。在文件類型之前輸出「c」。當我刪除證書行時,「c」消失。

頁來源:

c<!DOCTYPE html> 
<html lang="nl"> 
<head> 

有人嗎?

+0

我注意到的是,如果credentials()是has_one(),則不應該需要first()。 (我認爲)這對你有什麼影響嗎? – 2013-03-05 16:25:10

+0

不幸的不是。我還將憑據更改爲屬性而不是函數。所以:Company :: find(Auth :: user() - > company_id) - >證書。我調試了一些,並且我100%確定這是導致「c」顯示的規則。 – Hak 2013-03-06 09:30:08

回答

1

我誠實地懷疑雄辯與此有任何關係,但可能是您的代碼上某處不幸的「c」。這通常發生,解決方案是一個討厭的鼠標追逐(或在這種情況下「C」)。

一個可能的原因是以c<?php開頭或以?>c開頭的文件,通常是通過Autoloader(模型,庫和包)加載的文件。

我敢打賭,這是在您的Credential模型文件的開始,但也可能在其他地方。如果它不在Credential.php中,找到它的一種可能的方法是逐步添加任何涉及構建$global_data['credentials'] = ....行的內容。

  1. 嘗試硬編碼的憑證,如果沒有顯示「c」,它可能來自Company或Auth文件。
  2. 然後嘗試執行Company :: find($ 1) - > credentials(),如果沒有顯示「c」,則可能是您的Auth或User(它包含在Auth中)。
  3. 繼續這樣做直到找到它。

編輯:

這是因爲當自動裝彈機包括一個文件,PHP解析它喜歡它會在老SYLE PHP做,或者我應該說,像任何看法。

如果您的文件以<?php開頭,並以?>結束,而不是空白行或字符之前或之後的字符,則在Laravel的視圖呈現之前不會輸出任何內容。但是,如果任何這些文件都有輸出,它將進入PHP的輸出緩衝區並在視圖之前呈現。

在第一行始終打開這些非輸出文件並且從不用?>關閉<?php是一種很好的做法。

+0

謝謝,現在感覺真的很愚蠢。檢查除模型以外的所有內容。 C在那裏。謝謝。 – Hak 2013-03-07 09:34:27

+2

真的沒有什麼可以感到愚蠢的。這些小的拼寫錯誤通常是最令人頭痛的原因,它們發生在每個人身上。我想出了一個很難的:) – vFragosop 2013-03-07 13:52:54