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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2从视图和调试过程调用控制器操作相关的知识,希望对你有一定的参考价值。

在数据网格视图中,我有一个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);
                },
            });
    });",
    yiiwebView::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 = yiiwebResponse::FORMAT_JSON;
        return [
            'search' => $id,
        ];
}

此外,我想用phpstorm和xdebug跟踪活动,但调试过程不会停在控制器的第一个断点处。缺少什么,或者我的JS功能错了?

答案

最重要的是,在Yii2你有yiihelpersUrl::base();得到baseurl而不是Yii::$app->request->baseUrl;这是在没有baseUrl的控制台中错误的网址打印的原因,所以改变你的线

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

以下

url: '".yiihelpersUrl::base(). '/suppliers_orders/changequantity' . "',

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

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

以上是关于yii2从视图和调试过程调用控制器操作的主要内容,如果未能解决你的问题,请参考以下文章

yii2 mpdf 视图显示调试工具栏代码

在 Yii2 中从视图中调用模型方法

从 Xcode 视图调试中找出视图代码的位置

从另一个控制器调用操作并返回数据Yii2

Yii2基本模式不调用main.php

使用 Select2 在视图 Yii2 中调用函数