0

私は CakePHP を使用して請求システムに取り組んでいます。これは、最初はかなり基本的なものです。プロジェクトの基礎としてブログ チュートリアル ( http://book.cakephp.org/2.0/en/getting-started.html ) を使用しました。Twitter の Bootstrap フレームワークもインストールしました。

ナビゲーションにタブを使用しています。したがって、現時点では、ユーザーには次のタブ オプションがあります。

概要 - 請求書 - 経費 - 銀行 - 連絡先 - その他

Apps->View フォルダーには、Contacts フォルダーと Invoices フォルダーがあり、これらのフォルダーには次のファイルがあります。

index.ctp - これはページの一般的なレイアウトです。つまり、請求書と連絡先の場合は、データベースからのすべてのエントリを一覧表示する単なるテーブルです。

view.ctp - ユーザーがテーブル エントリをクリックすると、詳細ビ​​ューが表示されます。

add.ctp - 各ビューには追加ボタンがあり、このスクリプトは追加ページのレイアウトです。

Apps->View->Elements フォルダーには、タブ付きナビゲーション (tabs.ctp) のコードがあります。Apps->View->Contacts->index.ctp & Apps->View->Invoices->index.ctp に次のコード行があります。

<? echo $this->element('tabs'); ?>

これにより、各ビューにタブ付きナビゲーションが表示されます。

私の App->Config->routes.php には、次のコードがあります。

Router::connect('/', array('controller' => 'invoices', 'action' => 'index'));

明らかに、これにより Apps->View->Invoices->index.ctp がユーザーが表示する最初のページになります。

しかし、アプリケーションが読み込まれると、請求書ページは問題なく表示されますが、[連絡先] タブをクリックしようとしても何も起こりません。ソース コードを見ると、連絡先ビューのコードが読み込まれていません。

プロジェクトのレイアウトが間違っている可能性があるので、助けていただければ幸いです。

更新: ContactsController.php からのコード:

<?php
class ContactsController extends AppController {
    public $helpers = array('Html', 'Form', 'Session');
    public $components = array('Session');

    public function index() {
        $this->set('contacts', $this->Contact->find('all'));
    }

    public function view($id) {
        if (!$id) {
            throw new NotFoundException(__('Invalid contact'));
        }

        $contact = $this->Contact->findById($id);
        if (!$contact) {
            throw new NotFoundException(__('Invalid contact'));
        }
        $this->set('contact', $contact);
    }

    public function add() {
        if ($this->request->is('contact')) {
            $this->Contact->create();
            if ($this->Contact->save($this->request->data)) {
                $this->Session->setFlash('Your contact has been saved.');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('Unable to add your contact.');
            }
        }
    }
}

更新 routes.php のサンプル コード:

/**
 * Here, we are connecting '/' (base path) to controller called 'Pages',
 * its action called 'display', and we pass a param to select the view file
 * to use (in this case, /app/View/Pages/home.ctp)...
 */
    //Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
    Router::connect('/', array('controller' => 'invoices', 'action' => 'index'));   
/**
 * ...and connect the rest of 'Pages' controller's urls.
 */
    Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display')); 

/**
 * Load all plugin routes.  See the CakePlugin documentation on
 * how to customize the loading of plugin routes.
 */
    CakePlugin::routes();

/**
 * Load the CakePHP default routes. Only remove this if you do not want to use
 * the built-in default routes.
 */
    require CAKE . 'Config' . DS . 'routes.php';

よろしく、スティーブン

4

2 に答える 2

0

作成した [連絡先] タブへのリンクの形式が正しいことを確認してください。例えば;

<?php echo $this->Html->link('Contacts',array('controller'=>'contacts','action'=>'index'); ?>

書き換えルールが正しく構成されていれば、リンクは機能するはずです。

于 2013-04-08T11:37:19.297 に答える
0

Cake コアのキャッシュをクリアすることもできます。

app/tmp/cache/*/*
于 2013-04-07T18:21:06.003 に答える