2013-08-29 3 views
0

Я добавилLaravel вспомогательный класс не найден

app_path().'/classes', 

в global.php в массиве ClassLoader :: addDirectories. В приложение/классов/хелперов/Url.php у меня есть:

<?php namespace Helpers; 

class Url { 

public static function prep($str) 
{ 
    if ($str == 'http://' OR $str == '') 
    { 
     return ''; 
    } 

    $url = parse_url($str); 

    if (! $url OR ! isset($url['scheme'])) 
    { 
     $str = 'http://'.$str; 
    } 

    return $str; 
} 
} 

Тогда в представлении у меня есть:

{{HTML::link(Helpers\URL::prep($place->url), $place->url, array('target' => '_blank'))}} 

Это отлично работает локально, но на моем сервере я получаю сообщение об ошибке для : Класс «Помощники \ URL» не найдены. Я пробовал пройти через these steps, но это тоже не сработало. Есть идеи?

+1

сделал запустить композитор дамп-автозагрузку? – Laurence

+0

Да, но так как это не загружено в композитор, он ничего не сделал. Я даже добавил каталог классов в композитор, затем сбрасывал и все еще получал тот же результат. –

+1

'Класс Url {}' или 'Класс URL {}'? –

ответ

0

Хорошо, я нашел проблему. Я переименовал «приложение/классы/помощники» в «приложение/помощники», а затем добавил новое приложение/помощники к composer.json и global.php и запустил компоновщик. Просматривая некоторые из документации PHP, похоже, что у PHP иногда возникают проблемы с использованием классов «class», «classes» или других зарезервированных типов в каталогах и пространствах имен. Я все еще не уверен, почему это работает локально, но не на сервере.

+0

у вас есть чехол чувствительность вопрос возможно. – itachi

+0

Извините, нет. Как указано в вышеприведенном комментарии. Я пробовал в обоих направлениях и все еще получал ту же ошибку, только в разных случаях. –

+0

мои помощники не загружают ни одного сервера, а загружаются на другой сервер, пока я добавляю путь в global.php, а затем добавляю в composer.json и выполняю dump-autoload, которые они теперь работают. –

1

в конфигурации/app.php в aliases массиве определить свой Helper фасад, как так

'Helper' => 'Helpers\Url'

, то вы можете сделать Helper::prep()

+0

Я просто попробовал это, и я все еще получаю ту же ошибку, сначала загрузился только код из фреймворка. –

0

Я следовал https://stackoverflow.com/a/17091089/1454622 (его вариант 1, который я предпочитаю).

У меня была такая же проблема, когда она работала на моем локальном компьютере, но не на моем удаленном сервере. Это были проблемы с правами на каталоги и файлы в моем приложении/хранилище. Мой пульт нужно это (спасибо @elliotyap):

1) Мой вспомогательный класс в app/libs, поэтому я добавил к моему composer.json файлу в autoload разделе: "app/libs",

2) php composer.phar dump-autoload

И это также необходимы некоторые изменения разрешений:

3) sudo chgrp THE_SERVERS_WEB_SERVER_USER_HERE app/storage

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