1

コントローラー/アクション (ajax ではない) に投稿を送信しています。

アクション内で、それが投稿であるかどうかを確認する標準的な方法を実行しています (私が使用している他のアクションでも正確に機能します)。

if( isset( $_POST['LessonForm'] ) )
{
 ...
}
else
{
   Yii::trace( "Post Not Set" );        
}

そして、投稿は常に設定されていません。

ただし、条件の前に a を付けると、var_dump( $_POST ); die();次のようになります。

array(2) { ["LessonForm"]=> array(3) { ["title"]=> string(4) "test" ["shortDescription"]=> string(4) "test" ["image"]=> string(0) "" } ["yt1"]=> string(0) "" }

したがって、投稿は明らかにそこにあります。さらに、

foreach( $_POST as $key => $value )
{
    echo( $key.'<br>' );
}

私はこれを得る:

LessonForm
yt1

投稿がそこにあることをさらに示唆しています。

$_POST で変数を使用しようとすると、変数がありません。foreach ループでアクセスして変数に代入すると、変数を vardump できますが、使用できません。

accessControl の問題かどうかをテストするために、すべてのフィルターを削除しました。

このようなアクセスをブロックできるものは何ですか?

アップデート:

@Stu は、POST として送信されていないという点で正しいです。フォーム方法は郵送です。他に投稿を強制する方法がわかりませんか?

更新 2:

問題は修正されましたが、CActiveForm が投稿ではなく取得を送信し、投稿データが含まれている原因はまだわかりません。

モデルの保存からトランザクションを削除した後、問題は解消されました (最初から存在するべきではありませんでした)。

更新 3:

元の問題は actionCreate でした。その問題は不思議なことに消えました。次はactionEditです。(フォームで) レンダリングされたビューは同じファイルです。新しいモデルを作成するのではなく、データを保存してモデルを取得する方法を変更して、アクションをコピーして貼り付けました。

ネットワーク トラフィックを調べたところ、私のコードにない 302 リダイレクトがすぐに続く投稿があります。何らかの理由で、Yii はアクションに到達するために 302 リダイレクトを強制しています。

4

1 に答える 1

0

Yii はリクエスト変数の取得をすでに抽象化していますPOSTGET

使用する:Yii::app()->request->getParam('SomeVarName', 'ADefaultValue');

リクエスト変数を取得し、存在しない場合は適切なデフォルトを返す。そもそもフォームから変数を送信するのに問題がある場合は、別の問題である可能性があります。

于 2012-12-19T09:40:24.947 に答える