如何使用 xdebug 和 Netbeans 调试 Yii REST 控制器文件(在哪里放置断点以及 url 使用什么)?
How to debug Yii REST controller file with xdebug and Netbeans (where to put breakpoint and what url use)?
我已经安装了 Netbenas、XAMPP、xdebug 和 Yii2,并且我有简单的 REST 控制器:
<?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 插件,但如果此控制器没有操作(使用来自基础 class 的操作),我可以将断点放在哪里。在 运行 配置中我有项目 URL:
http://localhost:8081/myproject/
和索引文件:
web/index.php
我的本意是放在这里 url 给出了错误:
http://localhost:8081/myproject/web/index.php/contract
但 Netbeans 不接受索引文件字段中的 /contract 部分。
所以 - 我应该在 Netbenas 中打开哪个文件以及如何指示我要调试 url http://localhost:8081/myproject/web/index.php/contract?
你的
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 例如:..
'class' => 'yii\rest\IndexAction',
在同一个目录 vendor/yiisoft/yii2/rest/ActionController
你可以找到 class 代码
然后你可以把断点放在相关的 class 运行 函数上
public function run()
{
if ($this->checkAccess) {
call_user_func($this->checkAccess, $this->id);
}
return $this->prepareDataProvider();
}
我已经安装了 Netbenas、XAMPP、xdebug 和 Yii2,并且我有简单的 REST 控制器:
<?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 插件,但如果此控制器没有操作(使用来自基础 class 的操作),我可以将断点放在哪里。在 运行 配置中我有项目 URL:
http://localhost:8081/myproject/
和索引文件:
web/index.php
我的本意是放在这里 url 给出了错误:
http://localhost:8081/myproject/web/index.php/contract
但 Netbeans 不接受索引文件字段中的 /contract 部分。
所以 - 我应该在 Netbenas 中打开哪个文件以及如何指示我要调试 url http://localhost:8081/myproject/web/index.php/contract?
你的
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 例如:..
'class' => 'yii\rest\IndexAction',
在同一个目录 vendor/yiisoft/yii2/rest/ActionController
你可以找到 class 代码
然后你可以把断点放在相关的 class 运行 函数上
public function run()
{
if ($this->checkAccess) {
call_user_func($this->checkAccess, $this->id);
}
return $this->prepareDataProvider();
}