рендеринг cakephp-ложное действие все еще повторяет html-шаблон


Для действия в моем контроллере, которое не требует просмотра, я отключаю макет и шаблон следующим образом:

$this->autoRender = false;

И все это хорошо. Однако в этом же действии я повторяю "пропуск" или "неудачу", чтобы выразить свое мнение о результате. Проблема в том, что куча текста также повторяется: (мое "провал" или "прохождение" в самом конце)

 <!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
</head>
<body>
        </body>
</html>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html>
    <head> ....

Это повторяется 8-9 раз.

Как я могу избавиться от этого, чтобы повторялось только мое "прохождение" или "провал"? Вы можете помочь?

Я пытался

$this->layout = false; and
$this->render(false);

Большое вам спасибо.

Обновление:** Просто отметил, что это также перекликается с кучей кода javascrip из ниоткуда (Удалено <для вставки здесь), например: предварительный класс="ошибка cake" a href="javascript:пустота(0);"onclick="document.getElementById('cakeerr5035af14add0c-трассировка").style.display= (document.getelemen..

Это все действие **

//This action is called via:
//mysite/qcas/loadProdFromFile/dirId:76
// or
//mysite/qcas/loadProdFromFile/dirId:76/filePath:J:\ep12219 - Air Pollution\Load\prodValues.csv


function loadProdFromFile() {
    $this->autoRender = false;

    // here we get dir info based on first (and perhaps sole) param received: dirId
    $dirName = $this->Qca->Dir->find('first', array(
        'recursive' => 0,
        'fields' => array('Dir.name'),
        'conditions' => array('Dir.id' => $this->request->params['named']['dirId']),
            )
    );

    //if used did not provide filePath param, we use a default location based on dir info
    if ((is_null($this->request->params['named']['filePath']))) {
        $basedir = '/disk/main/jobs/';
        $dirs = scandir($basedir);

        $found = 0;
        foreach ($dirs as $key => $value) {
            if (strpos($value, $dirName['Dir']['name']) > -1) {
                $found = 1;
                break;
            }
        }
        if (!$found) {
            echo 'failfile';
            exit;
        }
        $loadDir = '/disk/main/jobs/' . $value . '/Load/';
        $thefiles = glob($loadDir . "*.csv");
        $prodFile = $thefiles[0];
    } else {
        // if user provided a path, we build a unix path
        // for some reason the extension is not posted, so we append it: only csv can be processed anyways
        $prodFile = AppController::BuildDirsFile($this->request->params['named']['filePath']) . ".csv";
    }

    // we get here with a working file path
    $fileHandle = fopen($prodFile, 'r');

    if ($fileHandle) {
        // start processing file to build $prodata array for saving to db
        $counter = 0;
        while (!feof($fileHandle)) {
            $line = fgets($fileHandle);
            if (strlen($line) == 0) {
                break;
            }

            $values = explode(',', $line);
            $prodata[$counter]['dir_id'] = $this->request->params['named']['dirId'];
            $prodata[$counter]['name'] = $dirName['Dir']['name'];
            $prodata[$counter]['employee_id'] = $values[1];

            $a = strptime($values[0], '%m/%d/%Y');
            $timestamp = mktime(0, 0, 0, $a['tm_mon'] + 1, $a['tm_mday'], $a['tm_year'] + 1900);
            $prodata[$counter]['qca_start'] = $timestamp;

            $end = $timestamp + ($values[2] * 60);
            $prodata[$counter]['qca_end'] = $end;

            $prodata[$counter]['qca_tipcode'] = $values[3] * -1;

            $prodata[$counter]['qca_durint'] = 0;
            $prodata[$counter]['qca_durtel '] = 0;
            $prodata[$counter]['qca_durend'] = 0;
            $prodata[$counter]['qca_signal'] = 0;
            $prodata[$counter]['qca_restart'] = 0;
            $prodata[$counter]['qca_stop'] = 0;
            $prodata[$counter]['qca_prevtipc'] = 0;
            $prodata[$counter]['qca_respid'] = 0;
            $prodata[$counter]['qca_lastq'] = 0;
            $prodata[$counter]['qca_smskey'] = 0;
            $prodata[$counter]['qca_telconta'] = 0;
            $prodata[$counter]['qca_execuqoc'] = 0;
            $counter++;
        }
    } else {
        // file was just no good
        echo 'fail';
        exit;
    }
    if (count($prodata) > 0) {
        $this->Qca->saveMany($prodata);
        echo count($prodata);
    }
}
Author: Carlos Garcia, 2012-08-21

1 answers

Прежде всего я вставлю сюда фрагмент из cakeapi под http://api.cakephp.org/class/controller о том, как работает авторедактор:

Логическое значение авторедактора
Установите значение true, чтобы автоматически отображать представление после логики действий.

Итак, это:

 $this->autoRender = false ;

Обычно отключает визуализацию представления, но сразу после завершения логики действий. Так вот почему вы получаете отголоски от своей логики действий. Вы можете удалить свое эхо из своего кода, чтобы запретите их показывать или попробуйте эту схему,

Если что-то не так:

$this->Session->setFlash('Error');
$this->redirect(array('action' => 'your_error_page'));

Который переместит вас на страницу ошибок с строкой ошибки в виде флэш-текста или когда все будет в порядке:

$this->Session->setFlash('Its fine dude!');
$this->redirect(array('action' => 'your_ok_page'));
 6
Author: scx, 2012-10-01 08:41:42