2012-04-27 43 views
1

我是用PHP和Smarty和semantic URLS(URL重写)使用MVC创建页面的三元组。

所以我有一个主控制器读取控制器的名称和它的动作。

示例:/我的空间/对象/编辑

主控制器重写读取后:副标题=对象&行动=编辑

其中“编辑”是类别“对象”的功能。

所以,我有一个.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”,它s函数“保存”

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

+3

你的规则不能破坏POST数据 – zerkms 2012-04-27 07:10:53

+0

你是说我的规则打破了POST数据,或者你在说他们没有破坏它吗? – glrodasz 2012-04-27 13:44:35

+2

我在说他们不能 – zerkms 2012-04-27 22:25:58

回答

0

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

这是正确的问题是形式,因为我使用的是一个AJAX函数的形式,所以输入有“id”标签,在HTML中必须是“名称”标签。

所以我重命名所有“ID”为“名称”,现在工作正常!

实施例:

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

另一个技巧是,我不把的print_r($ _ POST);在正确的位置,因为我的页面是一个类,所以您需要在您的PHP页面中放置?>标签之前的类的末尾。

谢谢!