Я хочу выполнить пользовательский файл PHP, минуя другую архитектуру UserFrosting.
Слима $app->render("myfile.php")
не похоже на работу. Он ожидает файл ветки в каталоге тем, он не будет выполнять скрипт PHP.
Как мне обойти это ограничение?
Я сделал скрипт загрузки файла в произвольном PHP-файле. Он использует $_FILES
массив, POSTed из пользовательской формы (из панели инструментов UserFrosting), для обработки загрузки пользовательских файлов и выполнения некоторой обработки.
Мне не удалось получить доступ к $_FILES
данные через пользовательский класс контроллера UserFrosting. Вот почему я использовал обычный старый внешний PHP-файл в корневом каталоге, и он работает.
Теперь я ищу, чтобы направить к этому файлу PHP через Slim, чтобы обеспечить базовый пользователь аутентификации / разрешения.
В целом, я бы рекомендовал не использовать этот подход для разработки приложения, которым будет легко управлять в долгосрочной перспективе. $_FILES
является суперглобальным, и поэтому должен быть доступен из любого места — даже из метода класса. Итак, я не уверен, почему у вас будут проблемы с доступом к нему в вашем контроллере.
Однако, если вам действительно нужно вызвать отдельный PHP-файл, содержащий процедурный код, вы всегда можете использовать простой старый include
из закрытия маршрута:
$app->get('/my-route/?', function () use ($app) {
// Access-controlled page
if (!$app->user->checkAccess('uri_my_route')) {
$app->notFound();
}
include "path/to/myfile.php";
});
Других решений пока нет …