2013-09-05 4 views
0

나는 내 사용자를위한 pdf 변환 유틸리티를 구축 중이다. CakePhp에서 작업 중이며 컨트롤러가 Ajax 호출을 수신하고 있습니다. 이유는 통지를 받고 오전 : 8 오류"Notice (8) : 정의되지 않은 색인 :"cakephp

컨트롤러 :

public function convertToPdf() { 
      $this->autoRender = false; 
      $pdf = new WkHtmlToPdf; 
      //$this->RequestHandler->respondAs('json'); 
      // echo $convertData = json_encode($inputVal); 

      if ($this->RequestHandler->isAjax()) { 
       $pdfName = uniqid(); 
       if ($_FILES['conversionSourceFile']) { 
        echo "File"; 
        $pdf->addPage($_FILES['conversionSourceFile']['tmp_name']); 
       } elseif ($_POST['conversionSourceUrl']) { 
        echo "Url"; 
        $pdf->addPage($_POST['conversionSourceUrl']); 
       } elseif ($_POST['conversionSourceHtml']) { 
        echo "Html"; 
        $pdf->addPage('<html>' . $_POST['conversionSourceHtml'] . '</html>'); 
       } 

       $saveToPath = 'upload/' . $pdfName . '.pdf'; 
       if ($pdf->saveAs($saveToPath)) { 
        echo 'upload/' . $pdfName . '.pdf'; 
       } 
      } 
     } 

오류 : 공지 사항 (8) : 정의되지 않은 인덱스 : conversionSourceFile [APP/컨트롤러/PdfsController.php, 라인 42] 코드 컨텍스트

if ($this->RequestHandler->isAjax()) { 
      $pdfName = uniqid(); 
      if ($_FILES['conversionSourceFile']) { 

PdfsController::convertToPdf() - APP/Controller/PdfsController.php, line 42 
ReflectionMethod::invokeArgs() - [internal], line ?? 
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 486 
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 187 
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 162 
[main] - APP/webroot/index.php, line 109 
+2

왜'ifetet ($ _ FILES [ 'conversionSourceFile'])'를 조건에 넣고 확인하지 않고 더 많은 일을 할 것인가? – hallaji

+0

@hallaji : ans로 의견을 말하십시오. +1을 주겠다 +1 –

답변

3

간단히 말해서 ck를 isset $ _FILES 수퍼 글로벌 변수로 설정하지 않으면 알림을 설정할 수 없습니다.

if (isset($_FILES['conversionSourceFile'])) { 
    // Do more stuff 
} 
2

당신이 "는 isset"또는으로, 첫 번째 조건을 확인해야처럼 "빈()!"당신이

if(isset($_FILES['conversionSourceFile'])){...} 
+0

Thankyou 늦어서 죄송합니다. 하지만 +1 +1 잡으십시오. –

+0

@ 존 감사합니다;) – adriaroca

6

코드에 notice을 방지하기 위해 사용하는 isset() 또는 !empty() .

isset()!empty()을 사용하면 변수가 설정되어 있는지 여부와 빈 값이 없는지 확인할 수 있습니다. 주문 var에 $의 용도를 변경 : "정의되지 않은 인덱스 (8) 공지 사항"

예컨대,

if (isset($_FILES['conversionSourceFile'])) { 
    // your code 
} 

또는

if (!empty($_FILES['conversionSourceFile'])) { 
    // your code 
} 
+0

이 상황에서 두 가지 모두를 확인해야하며 '비어 있음'만 확인하면 정의되지 않은 항목이 표시됩니다. 인덱스 오류가 설정되어 있지 않다면 .. –

+0

또는'@ '를 사용하여주의/경고를 숨 깁니다. 예 :'if (@ $ _ FILES ['conversionSourceFile ']) {// stuff here}' – hellodaniel

0

나는 오류를 해결했다.

전에 :

class GastosController extends AppController { 
    var $uses = array('Comprobante','Gasto','TipoGasto'); 

... ... ..

후 :

class GastosController extends AppController { 
    var $uses = array('Gasto','Comprobante','TipoGasto'); 

.. .. ..

를 붙이 클래스에 해당하는 이름 (Gast o) 먼저.