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']); 

그것은 오류가 발생합니다 : 이것은 내가하려고했던 것입니다. 그것을하는 방법에 대한 아이디어? getExtension() 함수가 나는 주변을 두리번 계속했습니다, 그리고 :

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

편집 :이 오류입니다 : 나는

편집 ... 그것은 내가 부족 매우 간단한 무언가를 확신 확실히 xxx.jpg를 업로드하면 "jpg"가 반환되므로 문제가되지 않습니다. 어떤 아이디어?

+1

** 어떤 ** 오류? – deceze

+0

오류 : Notice (8) : 오버로드 된 속성의 간접 수정 MediaController :: $ data는 효과가 없습니다 [APP/Controller/MediaController.php, line 31] –

답변

7

그 오류가() 방식 __get의 변화 5.2 이상 PHP로 인해 작동 - 그렇지 않습니다 읽기 전용 버전 대신 값에 대한 참조를 반환하십시오. Cake 2.0+는 일부 컨트롤러 속성에 __get()을 사용합니다.

이 경우 솔루션은 $this->data 대신 $this->request->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-> 데이터 객체의 두 가지 다른 합법적 인 인덱스입니다. –

1

을 :

getExtension($filename) 

는 그러나 코드에서, 당신은 사용

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

getExtension ($ filename) 내 getExtension() 함수의 구문을 보여 주려고했습니다. –

관련 문제