Как добавить соглашения об именах для записей в таблице дважды? - PullRequest
0 голосов
/ 08 июля 2011

У меня есть таблица под названием Uploads.

Я должен делать записи в этих таблицах дважды с помощью 'type' т.е. для ссылки на видео YouTube и загрузки изображений в таблице

Итак, я написал такой код

// для ссылки на видео echo $ form-> input ('Project.Upload.Name', массив ('type' => 'file', 'label' => false));

и // для изображения echo $ form-> input ('Project.Upload.Name', массив ('type' => 'file', 'label' => false));

Как я могу дифференцировать эти два поля? Есть ли способ соглашения об именах, чтобы я мог выделить поля для ссылок и изображений.

1 Ответ

2 голосов
/ 08 июля 2011

Если вы хотите два поля загрузки, вы должны назвать их так:

echo $form->input('Project.Upload.0.Name', array('type'=>'file','label' => false));
echo $form->input('Project.Upload.1.Name', array('type'=>'file','label' => false));

Это создаст массив в $this->data, готовый к использованию.Посмотрите как сохранить связанные данные модели в Поваренной книге для получения более подробной информации.

Редактировать

Если вам нужно отслеживатькакого типа ваша загрузка, вы должны добавить ее следующим образом:

echo $form->input('Project.Upload.0.Name', array('type'=>'file','label' => false));
echo $form->input('Project.Upload.0.Type', array('type'=>'hidden','value' => 'image'));
echo $form->input('Project.Upload.1.Name', array('type'=>'file','label' => false));
echo $form->input('Project.Upload.1.Type', array('type'=>'hidden','label' => 'video'));

Что вы делаете здесь, так это то, что вы ассоциируете свою первую загрузку с первым полем типа, которое имеет скрытое значение 'изображение'.Таким образом, первая запись будет сохранена в вашей базе данных примерно так (как Cake-Array):

Обработка изображения и видео, конечно, должна быть выполнена перед сохранением, так что база данных.

array(
    [Upload] => array(
        [0] => array(
            [id] => 1,
            [name] => 'test.jpg',
            [type] => 'image'
        ),
        [1] => array(
            [id] => 1,
            [name] => 'test.avi',
            [type] => 'video'
        )
    )
)
...