Выбор формы CakePHP в качестве параметра - PullRequest
1 голос
/ 14 марта 2011

У меня есть следующий код в моем представлении index.ctp для создания формы:

<?php 
    echo $this->Form->create(false,array('url' => array('controller' => 'admins', 'action' => 'edit_gallery')));

    echo $this->Form->input('name', array('options' => $array,'empty' => 'Select a gallery'));

    echo $this->Form->end(__('Submit', true));
?>

Эти коды создают раскрывающийся список элементов, каждый из которых имеет ассоциированный номер в видезначение.В моем admins_controller действие edit_gallery реализовано в точности так, как оно происходит при выпечке проекта, только то, что я изменил типичное edit на edit_gallery .

Мне нужно следующее: пользователь выбирает один элемент из списка, затем нажимает «Отправить», и он попадает в представление edit_gallery.ctp с формой для редактированияинформация об этом элементе в базе данных и обновить его.Моя проблема в том, что вместо того, чтобы сделать это, происходит следующее: когда пользователь нажимает Submit , в базе данных создается новый элемент, который даже не отображает представление ctp.

В общем, мой вопрос будет таким: как я могу получить выбранный вариант формы на целевой странице после того, как пользователь нажмет «Отправить»?

Редактировать В идеале, что бы я хотелхочу, чтобы, когда пользователь нажимал «Отправить», он отправлял запрос, такой как admins / edit_gallery / x , где x будет значением, связанным с выбором, сделанным пользователем,без отправки каких-либо других данных к действию.Я не знаю, возможно ли это.

Спасибо!

1 Ответ

0 голосов
/ 14 марта 2011

Метод редактирования, который запекает CakePHP, проверяет по умолчанию, если data не равен NULL, другими словами, если форма была отправлена, а затем обновляет эту запись.

Таким образом, при перенаправлении на * edit_gallery * из формы свойство data не является нулевым, поэтому причина создания нового элемента в базе данных.

Есть много способов решить эту проблему. Одним из них является удаление этой проверки из метода * edit_gallery *, создание другого метода, например * save_gallery *, и вызов этого метода из * edit_gallery.ctp *.

Таким образом, форма * edit_gallery.ctp * будет выглядеть примерно так:

<?php 
    echo $this->Form->create(false,array('url' => array('controller' => 'admins', 'action' => 'save_gallery')));

    (your form info)

    echo $this->Form->end(__('Submit', true));
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...