2

したがって、コントローラーにオブジェクト$ this-> data ['VideoForm'] ['filename']がありますが、データベースに保存する前に、getExtension($ filename)の戻り値を追加したいと思います。これは私が試していたものです:

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

「=」または「=>」演算子を使用して新しい値を割り当てようとすると、エラーがスローされます。それを行う方法のアイデアはありますか?私が見逃しているのは非常に単純なことだと確信しています...

編集:これはエラーです:

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

編集:私は周りを見続けました、そして私がxxx.jpgをアップロードするならば、getExtension()関数は間違いなく「jpg」を返すので、それは問題ではありません。何か案は?

4

3 に答える 3

7

このエラーは、__ get()の動作方法がPHP 5.2以降で変更されたことが原因です。値への参照は返されず、代わりに読み取り専用バージョンが返されます。Cake 2.0+は、一部のコントローラープロパティに__get()を使用します。

この場合の解決策は、$this->request->dataの代わりに書き込みを行うことです$this->data

参照:GoogleグループへのMarkStoryの投稿

于 2012-04-18T07:32:02.723 に答える
1

発生しているエラーはわかりませんが、コードを再フォーマットして違いを見つけることができます。

$this->data['VideoForm']['filename'] =
$this->data['VideoForm']['filename'] . "." . getExtension(
$this->data['VideoForm']['file']['name']
);
于 2012-04-18T01:21:04.067 に答える
1

あなたはあなたが追加したいと言います:

getExtension($filename)

ただし、コードでは次を使用します。

getExtension($this->data['VideoForm']['file']['name'])
于 2012-04-18T03:45:57.370 に答える