2

私は zend フレームワークを unsing しています。コントローラー、ホーム、

それで:

application>controllers>HomeController.php

application>views>scripts>home>index.phtml

index.phtml ページには、同じコントローラー内のアクションへのリンクがあります。

application>views>scripts>home>add.phtml

リンクのコードは次のとおりです。

<a href="../application/controllers/home/add">add</a>

これは機能しないだけでなく、zend フレームワークでこれを行う最良の方法ではないと確信しています。

私はワンプを使用していることに注意してください

http://localhost/sites/url/public/home/add

使用時:

<?php
    echo '<a href="' . $this->url(array('controller' => 'home', 'action' => 'add')) . '">Add Job</a>';  
?>

次のエラー メッセージが表示されます。

Message: Invalid controller specified (sites)

これは私のhtaccessにあるものです

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
4

3 に答える 3

3

これには url ヘルパーを使用します。

http://framework.zend.com/manual/en/zend.view.helpers.html

<a href="<?php echo $this->url(array('controller' => 'index', 
                                     'action' => 'index', 
                                     'module' => 'module1')); ?>" title="test">

アップデート

これはあなた.htaccessが好きな方法です:

SetEnv ENVIRONMENT development

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|png|swf|txt)$
RewriteRule ^.*$ index.php [NC,L]
于 2012-09-01T22:42:49.947 に答える
2

ZFで相対リンクと絶対リンクを使用する場合、すべてのリクエストがindex.phpを介してルーティングされることを除いて、ZFの外部とほとんど同じように機能するため、実際にはディレクトリにルーティングされず、ルーターにリンク先を伝えるだけです。

<a href="/home/add">add</a>

また

<a href="http://mysite.com/home/add">add</a>

URLヘルパーはこれを行うための推奨される方法であり、機能するはずでした. あなたの場合、localhost パス os があなたの URL に問題を引き起こしていると思われます。

プロジェクトごとに仮想ホストを設定すると、この問題は解消されます。仮想ホストのセットアップに関するヘルプが必要な場合は、ここ SO にいくつかの優れたリソースがあります。

http://blog.srmklive.com/2010/12/27/how-to-create-virtual-hosts-using-zend-server-ce/

于 2012-09-02T06:51:11.083 に答える
0

そのフォルダは//フォルダの外にある可能性があるため、applicationリンク内のフォルダを参照する必要はありません。htdocswwwpublic_html

リンクは、アプリケーションをインストールした場所に応じて、http://yourdomain.com/home/addまたはのようになります。http://localhost/home/add

私の意見では、これを行う最良の方法は、$this->baseUrl()メソッド(コントローラーではなくビューでのみ機能する)を使用するか、baseUrlを保持するbootstrap.phpで定数を定義することです。

于 2012-09-01T22:37:50.327 に答える