2013-05-30 1 views
0

Я создал приложение Laravel 3, оно включает в себя много управления контентом для каждого пользователя.Использование ядра Laravel в скриптах, построенных без него

Для прототипа и внутренних испытаний я ушел с простой конфигурацией KCFinder, теперь мы собираемся начать закрытую бета-версию.

Во-первых, я должен заблокировать KCFinder позади системы Laravel Auth.
Во-вторых, я должен настроить KCF с настройками для каждого пользователя.

Хотя может показаться, что это два вопроса, я сомневаюсь, что они есть.


Мой Laravel установлен в /srv/http/, KCFinder в /srv/http/public/php/kcfinder/.

KCFinder предоставляет два входящих файла - browse.php и upload.php. Эти файлы включают core/autoload.php, что в конечном итоге связывает KCF вместе.

Я пытался, чтобы Laravel's public/index.php внутри него, а затем попытался получить доступ к чему-то KCF (/php/kcfinder/browse.php) через браузер. Получено перенаправлено на сочетание пути запроса и корневого маршрута приложений Laravel: /php/kcfinder/browser.

Как я могу предотвратить маршрутизацию из Laravel и иметь возможность использовать Laravel внутри области KCF?

P.S. Я попытался пройти путь Bundle, но, по-видимому, KCF настолько плохо написана, что кажется, что для того, чтобы связать его, мне придется переписать все там.

+0

Пока я ответил и получил его на работу, я оставлю Q открытым некоторое время. Возможно, кто-то из основной команды Laravel может дать некоторое представление. – jolt

+0

Вы используете arch linux? – ytsejam

+0

@ytsejam, да, почему? – jolt

ответ

0

Мне удалось сделать это с очень грязным взломом.

В /srv/http/public/php/kcfinder/core/autoload.php я добавил следующие строки:

require '../../../paths.php'; 

require path('sys').'core.php'; 

\Laravel\Bundle::start(DEFAULT_BUNDLE); 

$KCFinderRoot = addslashes(realpath(dirname(__FILE__). '/../') . DS); 

\Laravel\Autoloader::map(array(
    'browser' => $KCFinderRoot . 'core/browser.php', 
    'uploader' => $KCFinderRoot . 'core/uploader.php', 
    'type_img' => $KCFinderRoot . 'core/types/type_img.php', 
    'type_mime' => $KCFinderRoot . 'core/types/type_mime.php', 
    'gd' => $KCFinderRoot . 'lib/class_gd.php', 
    'input' => $KCFinderRoot . 'lib/class_input.php', 
    'zipFolder' => $KCFinderRoot . 'lib/class_zipFolder.php', 
    'dir' => $KCFinderRoot . 'lib/helper_dir.php', 
    'file' => $KCFinderRoot . 'lib/helper_file.php', 
    'httpCache' => $KCFinderRoot . 'lib/helper_httpCache.php', 
    'path' => $KCFinderRoot . 'lib/helper_path.php', 
    'text' => $KCFinderRoot . 'lib/helper_text.php', 
)); 

if (!\Laravel\Auth::check()) 
{ 
    die('no user :('); 
} 

Где KCF имел некоторые файлы включений, мне пришлось сжать в $KCFinderRoot, в некоторых методах, даже требуя global их раньше.

В конфигурации KCF, я добавил:

// ... 
'uploadURL' => "/useruploads/" . sha1(Auth::user()->id . Auth::user()->email), 
'uploadDir' => path('public') . "useruploads/" . sha1(Auth::user()->id . Auth::user()->email), 
// ... 

Конечный результат работы, как я хотел, чтобы он, кроме того что я понятия не имею, как «умные» это.

P.S. В следующие дни я собираюсь попытаться связать это, несмотря на то, что файлы KCF остаются нетронутыми.