Если этот вопрос существует где-то еще на ТАК, пожалуйста, просветите меня, мне не повезло в моих поисках.
Дилемма:
Я создаю интерфейс, который позволит моей жене загружать фотографии на свой сайт и управлять ими.
Чтобы упростить процесс - я построил компонент для дублирования строки формы «добавить фотографию», в которую она сможет добавлять несколько изображений одновременно. Вот так:
Наценка: (генерируется Zend_Form)
<section id="add-photos">
<form enctype="multipart/form-data" action="/admin/photo/add-photos" method="post">
<dl class="zend_form">
<dt id="AddPhotos-label"> </dt>
<dd id="AddPhotos-element">
<fieldset id="fieldset-AddPhotos">
<dl> <-- This element is what get's duplicated on the 'add
another image' button -->
<input type="hidden" name="id" value="" id="id" />
<dt id="image_name-label">
<label for="image_name" class="required">Image Name</label>
</dt>
<dd id="image_name-element">
<input type="text" name="image_name" id="image_name"
value="" />
</dd>
<dt id="album_name-label">
<label for="album_name" class="required">Album Name</label>
</dt>
<dd id="album_name-element">
<input type="text" name="album_name" id="album_name"
value="" />
</dd>
<dt id="category_name-label">
<label for="category_name" class="required">Category
Name</label>
</dt>
<dd id="category_name-element">
<input type="text" name="category_name"
id="category_name" value="" />
</dd>
<dt id="image-label">
<label for="image" class="optional">Image:</label>
</dt>
<dd>
<input type="hidden" name="MAX_FILE_SIZE" value="134217728"
id="MAX_FILE_SIZE" />
<input type="file" name="image" id="image" />
</dd>
<dt id="thumbnail-label">
<label for="thumbnail" class="optional">Is Thumbnail?
</label>
</dt>
<dd id="thumbnail-element">
<input type="hidden" name="thumbnail" value="0" />
<input type="checkbox" name="thumbnail" id="thumbnail"
value="1" />
</dd>
<dt id="AddAnotherPhoto-label"> </dt>
<dd id="AddAnotherPhoto-element">
<button name="AddAnotherPhoto" id="AddAnotherPhoto"
type="button">Add Another Photo</button>
</dd>
</dl>
</fieldset>
</dd>
<dt id="submit-label"> </dt>
<dd id="submit-element">
<input type="submit" name="submit" id="submit" value="Submit" />
</dd>
</dl>
</form>
</section>
Если бы пользователь щелкнул по кнопке «AddAnotherPhoto», он добавил бы еще <dl>
внутри <fieldset>
. Таким образом, структура станет:
<fieldset>
<dl></dl>
<dl></dl>
</fieldset>
Но, как и следовало ожидать с моим действием контроллера:
public function addPhotosAction()
{
$form = new Form_AddPhoto();
if($this->_request->isPost()){
if($form->isValid($_POST)){
$photo_model = new Admin_Model_Photo();
$photo_model->addPhoto(
$form->getValue('image_name'),
$form->getValue('album_name'),
$form->getValue('category_name'),
$form->getValue('thumbnail')
);
}
}
$form->setAction('/admin/photo/add-photos');
$this->view->form = $form;
}
Он захватывает только один набор элементов. Итак, мои вопросы: как мне собрать все входящие элементы сгруппированным способом? Есть ли способ перебрать объект запроса и вызвать метод addPhoto в фотомодели для каждого набора?
Я попытался сделать это во внешнем интерфейсе через $.ajax()
, где итерация была легко выполнена, однако данные было не так легко передать действию.
Дайте мне знать, если есть лучшие способы архитектурно решить эту проблему - или, возможно, другие примеры, где это делается.
Спасибо,
Кен
Мне было трудно объяснить это, поэтому дайте мне знать, если вам нужно что-то прояснить.