ファイルからリンクを解除する画像の名前を取得するために、CHECKBOX フィールドと関連する非表示フィールドを使用して、送信されたフォームからいくつかの画像を削除しようとしています。私は Zend FW を使用しており、コントローラーには次のものがあります。
if ($input->isValid()) {
$q = Doctrine_Query::create()
->delete('Immobiliare_Model_Images i')
->whereIn('i.ImageID', $input->ids);
$result = $q->execute()
$image = $this->_getParam('Image');
foreach($image as $img) {
if(isset($input->ids)) {
$file = "./uploads/$img";
unlink($file);
} }
上記のコードの問題は、チェックされていないファイルも含め、すべてのファイルのリンクを解除することです。これも試しました:
$image = $this->_getParam('Image');
if(isset($input->ids)) {
foreach($image as $img) {
$file = "./uploads/$img";
unlink($file);
} }
同じ問題: 配列内のすべてのファイルが削除されます (リンク解除されます)。foreach() 関数を使用しない場合、ファイルは削除されません。データベース内のファイル名を削除しても大丈夫です。
私の質問は次のとおりです。チェックボックスがオンになっている画像のリンクを解除するにはどうすればよいですか? ご協力ありがとうございました。
html は次のようになります。
<?php foreach($this->records as $r):?>
<input type="checkbox" name="ids[]" value="<?php echo $r['ImageID']; ?>" class="require-one" />
<input type="hidden" name="Image[]" value="<?php echo $this->escape($r['Image']); ?>" />
<?php endforeach; ?>
....