0

私は CakePHP 2.x を使用しており、IIS でローカルに実行しています。Exporting data to CSV the CakePHP wayに関するチュートリアルに従っていますが、エラーが発生します。

入力している URL は次のようなものです。http://myproject.localhost/territory/spreadsheet.csv

私はRouter::parseExtensions('csv');最初のものとして持っていますapp\Config\routes.php

これが私のコントローラーです:

`class TerritoryController extends AppController { public $useTable = 'ezrep_territory';

public $paginate = array('limit' => 50);

public function beforeFilter()
{
    parent::beforeFilter();
    $this->Auth->deny('index');
}

public function Index()
{
    // ... snip ...
}

public function Spreadsheet()
{
    $data = $this->Territory->find(
        'all',
        array(
            'conditions' => array('Territory.ez' => $this->ez),
            'fields' => array('territory','terrcode','terrdesc'),
            'contain' => false
    ));
    $headers = array(
        'Territory'=>array(
            'territory' => 'Territory ID',
            'terrcode' => 'Terr Code',
            'terrdesc' => 'Terr Desc'
        )
    );

    array_unshift($data,$headers);
    $this->set(compact('data'));
}

} `

にはapp\View\Layouts\csv、次のファイルがありますdefault.ctp

<?php echo $content_for_layout; ?>

そしてapp\View\Territory、私はファイルを持っていますspreadsheet.ctp:

// Loop through the data array
foreach ($data as $row)
{
    // Loop through every value in a row
    foreach ($row['Territory'] as &$value)
    {
        // Apply opening and closing text delimiters to every value
        $value = "\"".$value."\"";
    }
    // Echo all values in a row comma separated
    echo implode(",",$row['Territory'])."\n";
}

にアクセスするとhttp://myproject.localhost/territory/spreadsheet.csv、 でレンダリングされたように見えるページが表示されapp\View\Layouts\default.ctp、次のエラーが表示されます。

View file &quot;C:\zproj\ezrep40\app\View\Territory\csv\spreadsheet.ctp&quot; is missing.Error: An Internal Error Has Occurred.

私は何を間違っていますか?

4

1 に答える 1

1

これは正しくないです

app\View\Territory には、ファイル Spreadsheet.ctp があります。

拡張子にちなんで名付けられたサブディレクトリに、レイアウトだけでなくビューも配置する必要があります。

app\View\Territory\csv\spreadsheet.ctp

于 2012-06-04T07:59:04.023 に答える