php
  • laravel
  • laravel-4
  • blade
  • 2013-11-01 4 views 1 likes 
    1

    는 일반적으로 Laravel에서 I는 다음과 같이 작성하여 모델을 호출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() }} 
    

    전화 정의되지 않은 메서드 를 분명히 \ 구성 \ 저장소에 :: getBaseImagePath()

    답변

    4

    를 사용하는 static 방법 $this을 사용할 수 없습니다.

    PHP에서 작동하고 Blade에서 작동하지 않는 이유는 모르지만 그렇게해서는 안됩니다.

    1) 응용 프로그램/설정/app.php

    2) Config 클래스 이름 변경에 Config Laravel 별칭을 변경합니다

    그래서 당신은 몇 가지 옵션이 있습니다.

    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/'; 
        } 
    
    } 
    

    는 답변을

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

    답변을 주셔서 감사합니다, 예 수업의 이름 때문에 – user2002495

    2

    코드에서 이 방법을 사용할 수없는 laravel의 Illuminate\Config\Repository 클래스로 이동하십시오. 이름을 변경하거나 namespace을 사용하십시오. 또한, 대신 당신이 당신은 Laravel 클래스 이름 Config을 사용하는

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

    감사

    composer dump-autoload 

    을 실행하고 그것을 사용, 그래 그 것이다 클래스의 이름 때문에 네임 스페이스에서 다른 것을 soemthing으로 바꾸는 걸 잊었습니다 – user2002495

    +0

    @ user2002495, 환영합니다. :-) –

    관련 문제