【问题标题】:"Notice (8): Undefined index: " cakephp《注意事项(八):未定义索引:》 cakephp
【发布时间】:2015-05-05 21:53:02
【问题描述】:

我正在为我的用户构建一个 pdf 转换实用程序。 我在CakePhp 工作,我的控制器正在接收 Ajax 调用。 为什么我收到 Notice: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, line 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

【问题讨论】:

  • 你为什么不在 if 条件下检查 isset($_FILES['conversionSourceFile']) 然后做更多的事情?
  • @hallaji : 请以 ans 的身份发表评论。我需要给你 +1

标签: php cakephp cakephp-2.0


【解决方案1】:

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

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

例如,

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

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

【讨论】:

  • 在这种情况下您需要同时检查两者,仅检查 empty 会在未设置的情况下给出未定义的索引错误..
  • 或使用@ 禁止通知/警告,例如:if (@$_FILES['conversionSourceFile']) { // stuff here }
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 谢谢你很抱歉你迟到了..但是抓住 +1 :)
    【解决方案4】:

    我解决了错误“注意(8):未定义的索引”更改了 var $ 使用的顺序。

    之前:

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

    ... ... ..

    之后:

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

    .. .. ..

    将与类(Gasto)对应的名称放在第一位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-01
      • 2013-11-27
      • 2015-06-02
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多