2012-04-18 3 views
2

Итак, у меня есть объект $ this-> data ['VideoForm'] ['filename'] в контроллере, но я хочу добавить к нему возвращаемое значение getExtension ($ filename) прежде чем я сохраню его в базе данных. Это то, что я пытался:CakePHP Изменить данные перед сохранением в DB

$this->data['VideoForm']['filename'] = $this->data['VideoForm']['filename'] . "." . getExtension($this->data['VideoForm']['file']['name']); 

Он выдает ошибку при попытке присвоить ему новое значение с «=» или «=>» оператора. Любая идея, как это сделать? Я уверен, что это что-то очень простое, что я пропавшими без вести ...

EDIT: Это ошибка:

Notice (8): Indirect modification of overloaded property MediaController::$data has no effect [APP/Controller/MediaController.php, line 31] 

EDIT: Я продолжал смотреть вокруг, а функция getExtension() является определенно возвращая «jpg», если я загружу xxx.jpg, так что это не проблема. Есть идеи?

+1

** Что ** ошибка? – deceze

+0

Ошибка: Уведомление (8): Непрямая модификация перегруженного свойства MediaController :: $ data не влияет [APP/Controller/MediaController.php, строка 31] –

ответ

7

Эта ошибка связана с PHP 5.2+ изменениям в способе __get() работает - это не верните ссылку на значение, а не только для чтения. Cake 2.0+ использует __get() для некоторых свойств контроллера.

Решение в этом случае состоит в том, чтобы написать $this->request->data вместо $this->data.

Код: Mark Story's post on Google groups

+0

Спасибо, отлично поработал! –

1

Я не знаю, что ошибки вы получаете, но я переформатировать свой код и позволит вам заметить разницу:

$this->data['VideoForm']['filename'] = 
$this->data['VideoForm']['filename'] . "." . getExtension(
$this->data['VideoForm']['file']['name'] 
); 
+0

$ this-> data ['VideoForm'] ['filename'] и $ this-> data ['VideoForm'] ['file'] ['name'] - фактически два разных, законных индекса объекта $ this-> data, если это то, что вы пытались указать. –

1

Вы говорите, что хотите добавить:

getExtension($filename) 

Но в вашем коде, вы используете:

getExtension($this->data['VideoForm']['file']['name']) 
+0

getExtension ($ filename) Я просто пытался показать синтаксис функции getExtension() –

Смежные вопросы