如何使用xdebug和Netbeans调试Yii REST控制器文件(断点放在哪里,url使用什么)?
我已经安装了Netbenas、XAMPP、xdebug和Yi2,并且我有简单的REST控制器:如何使用xdebug和Netbeans调试Yii REST控制器文件(断点放在哪里,url使用什么)?,netbeans,yii2,firebird,xdebug,yii-extensions,Netbeans,Yii2,Firebird,Xdebug,Yii Extensions,我已经安装了Netbenas、XAMPP、xdebug和Yi2,并且我有简单的REST控制器: <?php namespace app\controllers; use yii\rest\ActiveController; class ContractController extends ActiveController { public $modelClass = 'app\models\Contract'; } 我想调试这个错误,以确定如何改进Yii Firebird插件,
<?php
namespace app\controllers;
use yii\rest\ActiveController;
class ContractController extends ActiveController
{
public $modelClass = 'app\models\Contract';
}
我想调试这个错误,以确定如何改进Yii Firebird插件,但如果这个控制器没有操作(使用基类中的操作),我可以将断点放在哪里。在运行配置中,我有项目URL:
http://localhost:8081/myproject/
和索引文件:
web/index.php
我的意图是在这里放置一个给出错误的url:
error on line 2 at column 431: Encoding error
http://localhost:8081/myproject/web/index.php/contract
但Netbeans不接受索引文件字段中的/contract部分
那么-我应该在Netbenas中打开哪个文件,以及如何指示我要调试url 你的
class ContractController extends ActiveController
是ActiveController
因此,您可以将断点放置到正确的ActiveController操作
在
你可以找到
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();
}
public function run()
{
if ($this->checkAccess) {
call_user_func($this->checkAccess, $this->id);
}
return $this->prepareDataProvider();
}