2016-08-13 5 views
1

Я установил Netbenas, XAMPP, Xdebug и Yii2 и у меня есть простой контроллер REST:Как отладить файл контроллера Yii REST с помощью xdebug и Netbeans (где поставить точку останова и какой URL использовать)?

<?php 
namespace app\controllers; 
use yii\rest\ActiveController; 

class ContractController extends ActiveController 
{ 
    public $modelClass = 'app\models\Contract'; 
} 

, который подключается к Firebird 2.1 базы данных (WIN1257) и дает ошибку:

error on line 2 at column 431: Encoding error 

Я хочу отлаживайте эту ошибку, чтобы определить, как я могу улучшить плагин Yii-Firebird, но где я могу поставить точку останова, если у этого контроллера нет действий (используется действие из базового класса). В перспективе congfiguration у меня есть URL проекта:

http://localhost:8081/myproject/ 

и индексный файл:

web/index.php 

Мое намерение поставить здесь URL, что дает ошибку:

http://localhost:8081/myproject/web/index.php/contract 

Но Netbeans не принимает/контрактная часть в поле индексного файла.

Итак - какой файл следует открывать в Netbenas и как указать, что я хочу отлаживать URL-адрес http://localhost:8081/myproject/web/index.php/contract?

ответ

1

Ваш

class ContractController extends ActiveController 

является продолжением ActiveController

Таким образом, вы могли бы поместить контрольную точку для правильного действия ActiveController ..

в

vendor/yiisoft/yii2/rest/ActionController 

вы можете найти

public function actions() 
{ 
    return [ 
     'index' => [ 
      'class' => 'yii\rest\IndexAction', 
      'modelClass' => $this->modelClass, 
      'checkAccess' => [$this, 'checkAccess'], 
     ], 
     'view' => [ 
      'class' => 'yii\rest\ViewAction', 
      'modelClass' => $this->modelClass, 
      'checkAccess' => [$this, 'checkAccess'], 
     ], 
     'create' => [ 
      'class' => 'yii\rest\CreateAction', 
      'modelClass' => $this->modelClass, 
      'checkAccess' => [$this, 'checkAccess'], 
      'scenario' => $this->createScenario, 
     ], 
     'update' => [ 
      'class' => 'yii\rest\UpdateAction', 
      'modelClass' => $this->modelClass, 
      'checkAccess' => [$this, 'checkAccess'], 
      'scenario' => $this->updateScenario, 
     ], 
     'delete' => [ 
      'class' => 'yii\rest\DeleteAction', 
      'modelClass' => $this->modelClass, 
      'checkAccess' => [$this, 'checkAccess'], 
     ], 
     'options' => [ 
      'class' => 'yii\rest\OptionsAction', 
     ], 
    ]; 
} 

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

'class' => 'yii\rest\IndexAction', 

В том же директории vendor/yiisoft/yii2/rest/ActionController вы можете найти код класса

Тогда вы могли бы поместить точка останова на функции запуска соответствующего класса

public function run() 
{ 
    if ($this->checkAccess) { 
     call_user_func($this->checkAccess, $this->id); 
    } 

    return $this->prepareDataProvider(); 
} 

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

  • Нет связанных вопросов^_^