2013-11-01 48 views
1

通常在Laravel我通過創建這樣的調用模式:Laravel 4 Blade:如何使用自定義模型?

class Config extends Eloquent { 

protected function getBaseUri() { 
    return sprintf(
     "%s://%s%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['HTTP_HOST'], '/project/public/assets/' 
    ); 
} 

public static function getBaseImagePath() { 
    return $this->getBaseUri() . 'image/'; 
} 

} 

和地方調用它在PHP文件是這樣的:

回聲配置:: getBaseImagePath();

現在,我遷移到.blade.php,我需要調用從模型相同的功能,所以我做了這個地方在刀片:

{{配置:: getBaseImagePath ()}}

而且它不工作(足夠奇怪,因爲我知道所有刀片都是將{{}}標記轉換爲php標記)。任何人都可以解釋如何使這項工作?謝謝。

錯誤我得到的是:

調用未定義的方法 照亮\ CONFIG \庫:: getBaseImagePath()

回答

4

您正在使用Laravel類名Config

我不知道它爲什麼在PHP中工作,而不是在Blade中,但它不應該。

所以,你有一些選擇:

1)改變Config Laravel別名在app /配置/ app.php

2)改變你的Config類名。

3)爲你的類創建一個命名空間:

<? namespace MyName\Services 

class Config extends Eloquent { 

    protected function getBaseUri() { 
     return sprintf(
      "%s://%s%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['HTTP_HOST'], '/project/public/assets/' 
     ); 
    } 

    public static function getBaseImagePath() { 
     return $this->getBaseUri() . 'image/'; 
    } 

} 

執行

composer dump-autoload 

而且使用它

{{ \MyName\Services\Config::getBaseImagePath() }} 
+0

謝謝你的回答,是的,這是因爲班級的名字 – user2002495

2

在你的代碼

{{ Config::getBaseImagePath() }} 

它的指向到這個方法不可用的laravel的Illuminate\Config\Repository類。更改名稱或使用namespace。此外,您不能在static方法使用$this,而是可以使用

public static function getBaseImagePath() { 
    return static::getBaseUri() . 'image/'; 
} 
+0

感謝您的回答,是啊,是因爲類的名稱在命名空間中,忘了將它改成其他東西 – user2002495

+0

@ user2002495,歡迎和高興它幫助:-) –

相關問題