无法将操作get param传递到PHP文件

无法将操作get param传递到PHP文件,php,smarty,Php,Smarty,我有一个smarty项目,在.tpl文件中有一个表单: <form method="get" action="{$smarty.server.PHP_SELF}?action=func1"> <input type="text" name="username"/> <input type="submit"> </form> 有一个问题,如果php文件有很多函数用于不同的动作请求,那么在模板中如果有很多表单,我想通过动作进行区分

我有一个smarty项目,在
.tpl
文件中有一个表单:

<form method="get" action="{$smarty.server.PHP_SELF}?action=func1">
    <input type="text" name="username"/>
    <input type="submit">
</form>

有一个问题,如果php文件有很多函数用于不同的动作请求,那么在模板中如果有很多表单,我想通过
动作
进行区分

但是在我的实践中,请看上面的代码,我是这样写的,这无法将
操作
传递到我的php文件中


我想把
动作
写在动作的表单中,因为这样更标准。所以我不想把它写在一个隐藏的输入中。为什么写在动作中不能传入php文件

您可以使用具有指定名称和值的提交按钮:

<form method="get" action="{$smarty.server.PHP_SELF}">
    <input type="text" name="username" />
    <input type="submit" name="action" value="func1" />
</form>


然后您将得到一个值为func1的全局变量$\u POST['action']。但是该值将显示在您的按钮标题上,因此我建议您仅通过提交名称来查找表单,例如name='submit_form1'。

您的意思是
$\u GET['action']
?表单方法是一个“GET”,使用$\u POST['action']@sof-03无法获取任何内容,它将是$\u POST数据,如
username
变量。但如果这样设置,value='func1',如何设置值的输入按钮文本替换?您不能。但是您可以仅通过按钮名称找到表单,例如:
if(isset($\u POST['submit\u button\u form1')){{#…}
,而不管此变量包含什么值。