1

PHP と Smarty を使用した MVC とセマンティック URL (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」とその関数「save」を開きます

問題は、その時点で $_POST データが失われることです。

4

1 に答える 1

0

@Zerkmsどうもありがとう、あなたは正しいです!

AJAX関数にそのフォームを使用していたので、問題はフォームでした。入力には「id」タグがあり、HTMLでは「name」タグでなければなりません。

だから私は「名前」のすべての「ID」の名前を変更し、今では正常に動作します!

例:

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

もう 1 つのヒントは、print_r($_POST);を入れていないことです。私のページはクラスであるため、PHP ページの?>タグの前にクラスの末尾を配置する必要があります。

ありがとう!

于 2012-04-27T23:05:03.110 に答える