繁体   English   中英

yii2从视图和调试过程中调用控制器的操作

[英]yii2 call controller action from view and debug process

在数据网格视图中,我有一个textinput字段,如果该字段被更新,我想调用一个控制器函数。 因此,我在表单中包含了脚本并准备了控制器功能。

$this->registerJs(
    "$('#product_qty').on('click', function() { 
        alert('Button clicked!'); 
        $.ajax({
            url: '".Yii::$app->request->baseUrl . '/suppliers_orders/changequantity' . "',
            type: 'post',
            data: {
                 id: '5' , 
                 _csrf : '" . Yii::$app->request->getCsrfToken() . "'
             },
            success: function (data) {
                console.log(data.search);
                },
            });
    });",
    \yii\web\View::POS_READY,
    'my-button-handler'
);

警报功能将被调用并显示“按钮已单击”。 然后什么也没有发生。

Suppliers_orderController函数的控制器为:

public function actionChangequantity(){

        if (Yii::$app->request->isAjax) {
            $data = Yii::$app->request->post();
            $id = $data['id'];
        }
        \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
        return [
            'search' => $id,
        ];
}

此外,我想使用phpstorm和xdebug跟踪活动,但是调试过程不会在控制器的第一个断点处停止。 缺少什么,还是我的JS函数错误?

最重要的是,在Yii2您有\\yii\\helpers\\Url::base(); Yii2 \\yii\\helpers\\Url::base(); Yii2 获取baseurl而不是Yii::$app->request->baseUrl; 这就是在没有baseUrl的情况下在控制台中错误打印url的原因,因此请更改行

url: '".Yii::$app->request->baseUrl . '/suppliers_orders/changequantity' . "',

到以下

url: '".\yii\helpers\Url::base(). '/suppliers_orders/changequantity' . "',

其次,如果您使用本地主机路径而不是虚拟主机作为frontendbackend以及访问controller/action ,则必须使用index.php以及如下所示的web后的路径

http://localhost/myproject/backend/web/index.php/suppliers_orders/changequantity

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM