2012-04-27 72 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頁面中放置?>標籤之前的類的末尾。

謝謝!