“注意(8):未定义的索引:”cakephp

时间:2013-09-05 09:07:46

标签: php cakephp cakephp-2.0

我正在为我的用户构建一个pdf转换实用程序。 我在CakePhp工作,我的控制器正在接收Ajax调用。 为什么我得到注意:8 错误

控制器:

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 / Controller / 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

4 个答案:

答案 0 :(得分:4)

要避免代码中出现notice,您必须使用isset()!empty()

使用isset()!empty(),您可以检查变量是否已设置且没有空值。

e.g,

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

OR

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

答案 1 :(得分:3)

只需检查isset $ _FILES超全局变量,以防止未设置时发出通知。

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

答案 2 :(得分:2)

您需要检查第一个条件,使用“isset”或“!empty()”,如:

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

答案 3 :(得分:1)

我解决了错误“Notice(8):Undefined index”更改var $使用的命令。

之前:

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

... ... ..

后:

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

.. .. ..

首先输入与班级(Gasto)对应的名称。