首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用xdebug和Netbeans调试Yii控制器文件(在哪里放置断点和使用什么url )?

如何使用xdebug和Netbeans调试Yii控制器文件(在哪里放置断点和使用什么url )?
EN

Stack Overflow用户
提问于 2016-08-13 12:03:40
回答 1查看 681关注 0票数 1

我安装了Netbenas、XAMPP、xdebug和Yii2,还有简单的REST控制器:

代码语言:javascript
复制
<?php
namespace app\controllers;
use yii\rest\ActiveController;

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

它连接到FireBird2.1数据库(WIN1257)并给出错误:

代码语言:javascript
复制
error on line 2 at column 431: Encoding error

我想调试这个错误,以确定如何改进Yii插件,但是如果这个控制器没有动作(使用基类的操作),我可以在哪里放置断点。在运行拥挤状态中,我有Project:

代码语言:javascript
复制
http://localhost:8081/myproject/

和索引文件:

代码语言:javascript
复制
web/index.php

我的意图是在这里放置错误的网址:

代码语言:javascript
复制
http://localhost:8081/myproject/web/index.php/contract

但是Netbeans不接受索引文件字段中的/contract部件。

那么,我应该在Netbenas中打开哪个文件,以及如何指示我要调试url http://localhost:8081/myproject/web/index.php/contract

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-14 07:28:29

你的

代码语言:javascript
复制
class ContractController extends ActiveController

ActiveController的扩展

这样您就可以将断点放置到适当的ActiveController操作上。

在……里面

代码语言:javascript
复制
 vendor/yiisoft/yii2/rest/ActionController 

你可以找到

代码语言:javascript
复制
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',
        ],
    ];
}

在这里你可以看到,对于每一个动作,你都有一个适当的类,例如:。

代码语言:javascript
复制
  'class' => 'yii\rest\IndexAction',

在同一个dir vendor/yiisoft/yii2/rest/ActionController中,可以找到类代码。

然后,您可以将断点放在相关的类run函数上。

代码语言:javascript
复制
public function run()
{
    if ($this->checkAccess) {
        call_user_func($this->checkAccess, $this->id);
    }

    return $this->prepareDataProvider();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38932534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档