2016-05-23 3 views
1

В приложении/Library У меня есть файл с именем Helpers.phpИспользовать пользовательский класс в Laravel 5

<?php 

namespace App\Library\Helpers; 

class Helpers { 
    public function truncate($text) { 
    if (strlen($text) > 200) { 
     preg_replace('/\s+?(\S+)?$/', '', substr($text, 0, 201)); 
    } 
    return $text; 
    } 
} 

В одном из моих взглядов, я хочу использовать класс:

@foreach($data['articles'] as $article) 
    <div class="container"> 
     <div class="article"> 
     <h1>{{ $article->title }}</h1> 
     <p> 
      <?php 
      $helpers = new \App\Library\Helpers; 
      echo $helpers->truncate($article->body); 
      ?> 
     </p> 
     </div> 
    </div> 
    @endforeach 

Я получаю эту ошибку :

Class 'App\Library\Helpers' not found

+0

Почему вы не используете эту функцию в файлах констант? – DsRaj

+0

@DsRaj Что такое постоянные файлы? – frosty

+0

вы можете определить функцию или переменную в файле констант файл создать файл в config папке config/constants.php – DsRaj

ответ

1

Вы пытаетесь использовать пространство имен не класс, ваш класс на самом деле App\Library\Helpers\Helpers. Используя лезвие, вы можете использовать метод inject, чтобы получить класс в представлении.

@inject('helpers', 'App\Library\Helpers\Helpers') 

@foreach($data['articles'] as $article) 
    <div class="container"> 
     <div class="article"> 
      <h1>{{ $article->title }}</h1> 
      <p>{{ $helpers->truncate($article->body) }}</p> 
     </div> 
    </div> 
@endforeach 

Использование инъецировать создает новую переменную имя передается в качестве первого аргумента со значением класса передается в качестве второго аргумента. Теперь ваши помощники доступны в представлении.

+0

Я получаю 'Class App \ Library \ Helpers не существует' – frosty

+0

О, я вижу ... Я исправил« пространство имен »в« App \ Library », а затем использовал« app \ Library \ Helpers », теперь он работает. – frosty

+0

Рад, что вы заработали. Если вы не возражаете принять ответ, я был бы признателен. :-) –

0
<?php 
    $helpers = new App\Library\Helpers\Helpers; 
    echo $helpers->truncate($article->body); 
    ?> 

Или исправить имя пространства имен.

namespace App\Library; 
+0

Спасибо, что помогло мне исправить пространство имен. – frosty

+0

вы можете добавить псевдонимы класса larvel на app.php 'Helper' => App \ Library \ Helpers :: класс и легко использовать new \ Helper; –

Смежные вопросы