Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual/Developing/Models/Saving ...
Это старая версия Manual/Developing/Models/Saving за 2009-02-19 20:52:17..

Сохранение данных


CakePHP делает сохранение данных модели в один щелчок. Данные, готовые к сохранению, должны быть переданы в метод save(), используя базовый формат:


Array
(
    [ModelName] => Array
        (
            [fieldname1] => 'value'
            [fieldname2] => 'value'
        )
)


В большинстве случаев вам даже не надо будет беспокоится о формате: хелперы HtmlHelper, FormHelper, и find-методы все пакуют данные в этот формат. Если вы используете любой из хелперов, данные также удобно доступны в $this->data для быстрого использования.


Здесь пример действия контроллера, который использует модель CakePHP для сохранения данных в таблицу базы данных:


<?
function edit($id) {
    
//Есть ли данные из формы для сохранения?
    
if(!empty($this->data)) {
        
//Если данные из формы прошли валидацию и сохранены ...
        
if($this->Recipe->save($this->data)) {
            
//Вывести flash-сообщение и перенаправить в '/recipes'.
            
$this->Session->setFlash("Рецепт сохранен!");
            
$this->redirect('/recipes');
        }
    }
 
    
//Если нет данных из формы, то найти рецепт для редактирования
    //и передать его в отображение.
    
$this->set('recipe'$this->Recipe->findById($id));
}
?>


Одно дополнительно замечание: когда save() вызван, то данные, переданные в него первым параметром, проходят проверку через механизм валидации CakePHP (смотрите главу «Валидация данных»). Если по каким-то причинам ваши данные не сохраняются, то убедитесь не нарушаются ли правила валидации.


В модели есть несколько методов, касающихся сохранения данных:


save(array $data = null, boolean $validate = true, array $fieldList = array())

Этот метод сохраняет данные из массивов. Второй параметр позволяет вам отклонить валидацию, и с помощью третьего параметра вы можете передать перечень полей модели для сохранения. Для дополнительной безопасности вы можете ограничить сохраняемые поля в этом списке $fieldList.


Метод save также имеет альтернативный синтаксис:


save(array $data = null, array $params = array())

Массив $params может иметь любые, из следующих опций, в качестве индекса массива:


<?
array(
    
'validate' => true,
    
'fieldList' => array(),
    
'callbacks' => true //other possible values are false, 'before', 'after'
)
?>


Дополнительная информация о колбэках модели доступна здесь.


После того, как сохранение завершено, ID для объекта может быть найдено в переменной $id объекта модели – это особенно удобно, когда создаете новые объекты.



 
Комментарии


а если нет значений.. т.е. при добавлении данных нет id для связи.
240-204-113-92.pool.ukrtel.net (2009-11-05 02:25:31)
Добавить комментарий:

Файлов нет. [Показать файлы/форму]