2015-03-25 3 views
2

У меня есть проект CakePHP с этой структурой:Вызова функций CakePHP из контроллера и приложения папки

myrootapp 
|__ app 
    |__webroot 
     |__soap.php 

Я звоню WebService в этом soap.php, но я звоню некоторую CakePHP контроллер внутри моего Функции webservices такие как link.

Но App::import вызывает ошибку в моем приложении, поскольку App::import не импортируется в soap.php.

Как я могу импортировать и использовать функцию CakePHP на моей странице soap.php внутри папки webroot? Я хочу использовать App :: cakephpFunctions для импорта контроллеров.

** UPDATE **

Я звоню App: импорт внутри soap.php в корневой директории. Я хочу решить эту проблему и вызвать мои контроллеры в этом файле.

PHP Fatal error: Class 'App' not found in 

Спасибо.

+0

Пожалуйста, проверьте эту ссылку: - http://stackoverflow.com/questions/14264188/cakephp-include-class-from-a-directory-outside-the-app-directory –

+0

@anantkumarsingh Ее не возможно использовать APP :: import или APP: использует, создает ошибку, но я хочу импортировать эти функции внутри моего файла. но как я импортирую приложение или создаю что-то, чтобы получить разрешения на использование этой функции внутри папки webroot. – ErasmoOliveira

+0

Попробуйте включить файл вашего контроллера в свой soap.php и создать объект этого класса контроллера и использовать его. Если это невозможно, включите файл вашего контроллера в ваш soap.php и сделайте эту функцию статической, которую вы хотите использовать. –

ответ

3

Для того, чтобы использовать материал из рамок, вам необходимо загрузить/инициализировать его первым. Вы можете сделать это, в том числе загрузочного файла CakePHP в ваш soap.php файл:

require_once('/path/to/your/cakephp/lib/Cake/bootstrap.php'); 

Это будет инициализировать структуру, в том числе App класса.

+0

Я пробовал, но я получаю эту ошибку: PHP Неустранимая ошибка: require(): Не удалось открыть запрос «C: \ xampp \ htdocs \ epedidos \ libDSCakeDSbasics.php '(include_path ='; C: \ xampp \ php \ PEAR ') в C: \ xampp \ htdocs \ epedidos \ lib \ Cake \ bootstrap.php в строке 138 – ErasmoOliveira

+0

@ErasmoOliveira Ах да, похоже, что вам не хватает некоторых определений констант. См. Https://github.com/cakephp/cakephp/blob/2.6/index.php#L26-L30 для некоторых основных констант, которые использует инфраструктура. DS - это ярлык Cake для константы PHP 'DIRECTORY_SEPARATOR'. – Oldskool

+1

после добавления index.php работать. его сделали, спасибо @Oldskool – ErasmoOliveira

-1

Попробуйте

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://localhost/app/controller/functionName"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch); 

CakePHP имеет очень хорошие инструменты для этого: http://book.cakephp.org/2.0/en/development/rest.html

+0

http://stackoverflow.com/questions/29273169/how-to-call-controller-function-from-webroot- file-in-cakephp – ErasmoOliveira

-1
App::import('Model', 'YourModelName'); 
$result = new YourModelName(); 
$abc = $model->find('all'); 
+0

Как это будет работать? Проблема в том, что 'App' не найден, почему ваш код работает? –

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