通常在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()
答案 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/';
}