Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过POST将数据从一个控制器动作传递到另一个控制器动作_Php_Yii2 - Fatal编程技术网

Php 如何通过POST将数据从一个控制器动作传递到另一个控制器动作

Php 如何通过POST将数据从一个控制器动作传递到另一个控制器动作,php,yii2,Php,Yii2,我希望从一个控制器的操作向另一个控制器的操作发送POST请求。在目标控制器操作中,我以Yii::$app->request->POST()的形式访问POST数据 我希望根据需要从另一个控制器修改此变量 请注意,我不想使用$\u GET或它的Yii等价物。就像我在评论中写的那样,这不是我喜欢的方法,但有一个函数: Yii::$app->runAction('yourController/yourAction', [$yourParameters]); 就像我在评论中写的那样,这并不是我喜欢

我希望从一个控制器的操作向另一个控制器的操作发送POST请求。在目标控制器操作中,我以
Yii::$app->request->POST()的形式访问POST数据
我希望根据需要从另一个控制器修改此变量


请注意,我不想使用$\u GET或它的Yii等价物。

就像我在评论中写的那样,这不是我喜欢的方法,但有一个函数:

Yii::$app->runAction('yourController/yourAction', [$yourParameters]);

就像我在评论中写的那样,这并不是我喜欢的方法,但它有一个功能:

Yii::$app->runAction('yourController/yourAction', [$yourParameters]);
试试这个:

<?= Html::a('Link Text', ['controller/action'], [
    'data'=>[
        'method' => 'post',
        'confirm' => 'Are you sure you want to submit this?',
        'params'=>['id' => 21, 'val2' => true],
    ]
]) ?>

相应地调整您的值。
确认
是可选的。如果不想确认用户操作,请将其删除。

尝试以下操作:

<?= Html::a('Link Text', ['controller/action'], [
    'data'=>[
        'method' => 'post',
        'confirm' => 'Are you sure you want to submit this?',
        'params'=>['id' => 21, 'val2' => true],
    ]
]) ?>


相应地调整您的值。
确认
是可选的。如果不想确认用户操作,请将其删除。

这种方法听起来有点脏。另一种方法可能是,您从控制器中提取功能,并将其发布到服务中。然后你可以在两个控制器中使用这个服务来修改你的变量。我认为你必须使用ajax来实现这个目标。这种方法听起来有点脏。另一种方法可能是,您从控制器中提取功能,并将其发布到服务中。然后,您可以在两个控制器中使用此服务来修改您的变量。我认为您必须使用ajax来实现上述目标。我认为$yourParameters中的参数不是通过POST发送的,而是作为GET参数发送的。我需要发送POST-variablesmaking一个curl请求到您想要的操作,我想会起作用的。但是盖伊。。。这真的很难:用不带参数的runAction方法来测试它!您没有创建新请求,因此“Yii::$app->Request”的POST变量也应该在您的第二个控制器中可用!我在某个地方读到了关于cURL方法的文章,实际上这是一个很麻烦的过程:P。我试图覆盖$u POST变量,它似乎起作用了。现在的问题是,当我在目标控制器中使用$\u POST访问发布的数据时,我可以看到新发布的内容,但是使用
Yii::$app->request->POST()
只提供最初发布的内容,理论上你可以用:\Yii::$app->request->setBodyParams($yourParameters)覆盖POST参数;在调用$app->runAction()之前,我认为$yourParameters中的参数不是通过POST发送的,而是作为GET参数发送的。我需要发送POST-variablesmaking一个curl请求到您想要的操作,我想会起作用的。但是盖伊。。。这真的很难:用不带参数的runAction方法来测试它!您没有创建新请求,因此“Yii::$app->Request”的POST变量也应该在您的第二个控制器中可用!我在某个地方读到了关于cURL方法的文章,实际上这是一个很麻烦的过程:P。我试图覆盖$u POST变量,它似乎起作用了。现在的问题是,当我在目标控制器中使用$\u POST访问发布的数据时,我可以看到新发布的内容,但是使用
Yii::$app->request->POST()
只提供最初发布的内容,理论上你可以用:\Yii::$app->request->setBodyParams($yourParameters)覆盖POST参数;在调用$app->runAction()之前,但这可以在视图文件中完成,对吗?这里的情况是,我有一个控制器渲染的视图文件。有一个表单,它的数据被发布到控制器。现在在这个控制器#1中,我想执行一些操作,并向我的$#u POST变量添加一些参数,然后调用控制器#2,在使用这个更新的$#u POST时,我想执行一些其他操作。但这可以在视图文件中完成,对吗?这里的情况是,我有一个控制器渲染的视图文件。有一个表单,它的数据被发布到控制器。现在,在这个控制器#1中,我想执行一些操作,并向我的$#u POST变量添加几个参数,然后调用控制器#2,在使用这个更新的$#u POST时,我想执行一些其他操作。