2017-01-19 4 views
0
<?php 

namespace App\Http\Controllers; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use Paypal; 
use Redirect; 
use Illuminate\Http\Request; 


class SubscriptionController extends Controller 
{ 


private $_apiContext; 
public function __construct() { 
    $this->_apiContext = PayPal::ApiContext(
     config('services.paypal.client_id'), 
     config('services.paypal.secret')); 

    $this->_apiContext->setConfig(array(
     'mode' => 'sandbox', 
     'service.EndPoint' => 'https://api.sandbox.paypal.com', 
     'http.ConnectionTimeOut' => 30, 
     'log.LogEnabled' => true, 
     'log.FileName' => storage_path('logs/paypal.log'), 
     'log.LogLevel' => 'FINE' 
    )); 
} 

я получаю сообщение об ошибке, что класса «Paypal» не найден в SubscriptionController.php линии 17 Но мой IDE показывает, что там, я даже использовал его в другой проект и его рабочий штраф.Класс «Paypal» не найден в Laravel

В моем приложении.php У меня есть: 'Paypal' => 'Netshell \ Paypal \ Facades \ Paypal', Так должно быть хорошо.

Почему я получаю эту ошибку?

+0

Если вы запустите 'comper dump-autoload', это поможет? Иногда файл автоматической загрузки не загружается должным образом, и ваш класс не может быть найден. – Loek

+0

@Loek, я сделал композицию автозагрузки 2 раза до сих пор, но по-прежнему та же ошибка – user3844579

+0

Хмм странно. В последнее время появилось много проблем с фасадами PayPal, но никто не придумал ответа, кроме дампа автозагрузчика. – Loek

ответ

0

Выполнить эту команду в корневом каталоге проекта Laravel установить Paypal composer require netshell/paypal dev-master

После этого, добавьте поставщика услуг app/config/app.php в providers массиве.

'providers' => [ 
// ... 
    'Netshell\Paypal\PaypalServiceProvider', 
] 

В конце добавить псевдоним app/config/app.php в aliases массиве

'aliases' => [ 
// ... 
    'Paypal' => 'Netshell\Paypal\Facades\Paypal', 
] 

После того, что вы должны быть в состоянии использовать Paypal

Надеются, что это помогает

+0

Я уже установил ее, но спасибо – user3844579

0

Попробуйте Избавление линии use Paypal;. Если вы определяете псевдоним в app.php, я не думаю, что для этого вам нужен оператор use - это был мой опыт при определении моих собственных псевдонимов.

Вы также можете попробовать определения псевдонима с другим синтаксисом, чтобы увидеть, если это помогает:

'Paypal' => Netshell\Paypal\Facades\Paypal::class 

(уведомление нет котировки на стоимости, как это ссылка на класс).

+0

Нет вам нужна инструкция использования с фасадами/псевдонимами. Проверьте это: https://laravel.com/docs/5.3/facades#how-facades-work Обратите внимание на 'use Cache;' – Paras

+0

@Paras Спасибо, интересно. Я думаю, что по собственному опыту это сработало, потому что я на самом деле не навязываю истинный Фасад в моем использовании, просто пользовательский класс со статическими методами. Я полагаю, что если «Paypal :: class» реализует Facade, «использование» действительно может потребоваться в соответствии с документами. – Bryan

+0

Я пробовал его с помощью «Paypal» => Netshell \ Paypal \ Facades \ Paypal :: class, но я получаю такую ​​же ошибку.если я добавлю использовать Netshell \ Paypal \ Paypal; ошибка изменяется на Нестатический метод Netshell \ Paypal \ Paypal :: apiContext() не следует вызывать статически, предполагая $ это из несовместимого контекста – user3844579

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