1

通常在 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 文件中的某处调用它,如下所示:

回声配置::getBaseImagePath();

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

{{ 配置::getBaseImagePath() }}

而且它不起作用(很奇怪,因为我知道所有刀片所做的都是将 {{ }} 标签转换为 php 标签)。谁能解释如何使这项工作?谢谢。

我得到的错误是:

调用未定义的方法 Illuminate\Config\Repository::getBaseImagePath()

4

2 回答 2

4

您正在使用 Laravel 类名Config

我不知道为什么它在 PHP 而不是 Blade 中工作,但它不应该。

所以你有一些选择:

1) 更改Configapp/config/app.php 中的 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() }}
于 2013-11-01T11:02:42.640 回答
2

在您的代码中

{{ Config::getBaseImagePath() }}

它指向Illuminate\Config\Repository该方法不可用的 laravel 类。更改名称或使用namespace. 此外,您不能$thisstatic方法中使用,而是可以使用

public static function getBaseImagePath() {
    return static::getBaseUri() . 'image/';
}
于 2013-11-01T11:02:39.170 回答