У меня есть view.blade.php, который вызывает wrapper.php, который возвращает некоторое значение для iframe в представлении.
Я могу вернуть это значение, но я должен сделать некоторую работу с другими методами в моих классах Laravel.
Можно установить классы внутри php-обертки и вызвать методы или вызвать методы статических классов?
Структура проекта:
- project
-- app
--- Http
---- Classes
----- RepositoryUtil.php
...
-- public
--- Wrapper.php
...
-- resources
--- views
---- partials
----- view.blade.php
Код внутри view.blade.php:
<iframe id="reader" src="/libs/pdfjs/web/viewer.html?file=http://project.dev/Wrapper.php?id={{$encrypted}}">
</iframe>
Код внутри Wrapper.php:
<?php
// tried: use App\Http\Classes\RepositoryUtil
// tried: \App\Http\Classes\RepositoryUtil::getValue();
// tried: {{RepositoryUtil::getValue()}}
$myValue = RepositoryUtil::getValue(); #not work
var_dump($myValue);
?>
Код внутри RepositoryUtil.php
<?php
class RepositoryUtil{
public static function getValue(){
dd("getValue!");
return "value";
}
}
?>
Ошибка:
( ! ) Fatal error: Class 'RepositoryUtil' not found in /home/vagrant/Code/project/public/Wrapper.php on line 14
РЕДАКТИРОВАТЬ:
Я могу вызвать добавление метода статического класса include_once("../App/Http/Classes/RepositoryUtil.php");
на вершине Wrapper.php
но когда я называю «методы Laravel», как $decrypted = Crypt::decrypt($encrypted);
это возвращает ошибку:
( ! ) Fatal error: Class 'Crypt' not found in /home/vagrant/Code/project/App/Http/Classes/RepositoryUtil.php on line 13
Спасибо
После многих и многих попыток и исследований, я понял это!
Разместите мой код Wrapper.php:
<?php
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$value = RepositoryUtil::getValue();
// Your other staff here...
?>
Проблема была в том, что после вызова внешнего php, Laravel не загрузился!
Я пытался загрузиться с require __DIR__.'/../bootstrap/autoload.php';
, $app = require_once __DIR__.'/../bootstrap/app.php';
и звонит $app->boot()
и это сработало.
Но были и другие проблемы: фасады не были загружены, но я могу видеть в массиве «псевдоним», когда журнал $app
переменная.
Вы должны загрузить ядро, чтобы вернуть Фасады обратно.
С помощью Laravel 5.1
,
Других решений пока нет …