Laravel 4 Blade:如何使用自定义模型?

时间:2013-11-01 10:38:48

标签: php laravel laravel-4 blade

通常在Laravel中我通过创建这样的东西来调用模型:

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文件中调用它:

  

echo Config :: getBaseImagePath();

现在,我正在迁移到.blade.php,我需要从模型中调用相同的函数,所以我在刀片中的某个地方执行了此操作:

  

{{Config :: getBaseImagePath()}}

它不起作用(很奇怪,因为我知道所有刀片正在做的是将{{}}标签转换为php标签)。任何人都可以解释如何使这项工作?感谢。

我得到的错误是:

  

调用未定义的方法   照亮\配置\库:: getBaseImagePath()

2 个答案:

答案 0 :(得分:4)

您使用的是Laravel班级名称Config

我不知道为什么它在PHP中有效而在Blade中无效,但它不应该。

所以你有一些选择:

1)更改app / config / app.php中的Config Laravel别名

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() }}

答案 1 :(得分:2)

在您的代码中

{{ Config::getBaseImagePath() }}

它指向laravel的Illuminate\Config\Repository类,此方法不可用。更改名称或使用namespace。另外,您无法在$this方法中使用static,而是可以使用

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