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