Article と Image (Attachment モデルのエイリアス) ala https://github.com/josegonzalez/uploadの間にポリモーフィック アタッチメント モデルがあります。記事には多くの画像があります。画像は添付ファイルです。
Article フォームの保存ボタンを使用してフォームを送信すると、関連付けられたモデルを含め、すべてが適切に保存されます。
ただし、記事を保存する前に記事のプレビューに使用する画像をユーザーが選択できるように、添付画像の動的表示を設定しました。動的な画像表示は機能しますが (phpMyAdmin の行を削除することで証明されています)、送信ボタンを押さずに選択した関連する画像をアップロードして保存する方法がわかりません。画像を選択したらすぐに (または、記事を送信しないボタンを押したときにも) 画像をアップロードしたいと思います!
関連するフォーム セクションと、最終的に関連するすべての画像を表示するスクリプトを次に示します。
<div id='imagesControl'>
<?php
//TODO gotta make this happen live
echo $this->Form->input('Image.0.attachment', array('type' => 'file', 'label' => 'Image'));
echo $this->Form->input('Image.0.model', array('type' => 'hidden', 'value' => 'Content'));
echo $this->Form->input('Image.0.foreign_key', array('type' => 'hidden', 'value' => $id));
echo $this->Form->input('Image.0.id', array('type' => 'hidden')); //Thought this would help
?>
<div id='attachedImages'>
</div> </div>
<script>
$(document).ready(function() {
$('#imagesControl').change(function() {window.alert("sometext");
$("#attachedImages").load('../imageDisplay/<?php echo $id ?> #attachedImages',
{id: $(this).attr('id')});
})
.change();
});
</script>
特に、レンダリングされるビューファイル '../imageDisplay' には、送信された div id$this->data
のみ$(this).attr('id').
が含まれています。フォームが保存される前に入力セクションで選択したファイルを含む変数がどこにも見つかりません (ファイルアップロードして保存しようとしています)。自動魔法を使用して保存するため、明らかにそこにあり$this->Article->saveAll()
ます。
ただし、記事を送信せずに、どこで、いつ、どのように画像をアップロードし、新しい画像のデータを含む添付テーブルに行を追加できるかを推測することさえできません。私は何日も立ち往生しています。