1

我正在尝试使用带有 PHP 和 Smarty 的 MVC 以及语义 URLS(URL 重写)来做一个页面。

所以我有一个主控制器,它读取控制器的名称及其操作。

示例:/mypage/object/edit

重写后的主控制器读取:?subtopic=object&action=edit

其中“编辑”是“对象”类的函数。

所以,我在 .tpl(Smarty 模板)中有一个表格,如下所示:

<form name="formulario" action="/mypage/imagen_del_dia/guardar" method="POST">
<table>
<tr>
<td><div>Autor</div></td>
<td><input type='text' id='autor' value="{$username}" readonly /></td>
</tr>
<tr>
<td><div><input type='hidden' id='id' value="{$imagen.id}"/></td>
<td><input class="button_personalizado" type='submit' value='Editar' name='Editado'></td>
</tr>
</table>
</form> 

当您单击提交时,.htaccess 会执行以下操作:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule    ^([0-9a-z_-]+)$ /mypage/index.php?subtopic=$1 [NC,L]
RewriteRule    ^([0-9a-z_-]+)/guardar$ /mypage/index.php?subtopic=$1&action=save [NC,L]

这个想法是 $_POST 数据可以通过以下方式读取:

/mypage/index.php?subtopic=$1&action=save

在这种情况下,主控制器打开类“imagen_del_dia”及其功能“保存”

问题是 $_POST 数据在那一点丢失了。

4

1 回答 1

0

@Zerkms 非常感谢你,你是对的!

没错,问题出在表单上,​​因为我将该表单用于 AJAX 函数,所以输入有“id”标签,在 HTML 中必须是“name”标签。

所以我将所有“id”重命名为“name”,现在工作正常!

例子:

<td><div><input type='hidden' name='id' value="{$imagen.id}"/></td>

另一个提示是我没有放print_r($_POST); 在正确的地方,因为我的页面是一个类,你需要在你的 PHP 页面的?>标记之前放在类的末尾。

谢谢!

于 2012-04-27T23:05:03.110 回答