0

以下を使用して新しいコントローラーを作成しました。

zf create controller email

しかし、結果のファイルは に入れられず、 ...application/modulesに入れられましたapplication/

とにかく、コントローラーとビューファイルを正しいディレクトリに移動しました

それから私は使用しました:

<a href="<?php echo $this->url(array(), 'email');?>">EMAIL</a>

ページを更新すると、internal Error 500

何が切られているのかよくわからない -> それはZend Version: 1.12.1

4

2 に答える 2

1

$this->url() ビュー ヘルパーは、指定されたパラメーターとルート名を照合して URI を作成します。

コードが機能するためには、次のことを行う必要があります。

1 - ルーター ファイルで、次のようにルートを指定します。

    $router->addRoute(
        'email', 
        new Zend_Controller_Router_Route_Regex('([\w\d\.\_]+)@([\w\d\.]+)([\s]*)',
            array(
                'module' => 'default',
                'controller' => 'index',
                'action' => 'index'
            ),
            array(
                1 => 'username',
                2 => 'host'
            ),
            '%s@%s'
        )
    );

addRoute の最初のパラメーターはルートの名前で、これを の 2 番目のパラメーターとして使用します$this->url()。2 番目のパラメーターはルーター アダプターです。多くの異なるアダプターがあります (マニュアルを確認してください)。これは正規表現アダプターです。

最初のパラメーター - URI をチェックするための正規表現文字列。これをより電子メールに適した正規表現に変更する必要がありますが、今のところはこれで十分です。

2 番目のパラメータはデフォルトです。

3番目 - 変数。正規表現のグループごとに名前を指定する必要があるため、 @ の前のグループは1 => 'username'-になり2 => 'host'ます。

そして最後に 4 番目のパラメーター - 非常に重要な - 逆のルートです。これは、実際に Zend がピースを接着するために使用するものです。各グループを「記号」に変更して作成すると、全体が次のようになり"%s@%s"ます-それらの作成方法に関するいくつかの記事を読む必要があります-数字のみの場合は%d、文字のみの場合は%w、%混合用で、これ以上何も必要ありませんでした。

2 - ルーターをセットアップしたら、ビュー ファイルに戻り、関数を次のように変更します。

    $this->url(array('username' => 'test', 'host' => 'test.com'), 'email');

結果の html は次のようになります。

<a href="test@test.com">EMAIL</a>

3 - サーバー構成または zend アプリケーションの ini ファイルで error_reporting をオンにします。何が実際に誤動作しているのかについて、より深い洞察を得ることができます。

于 2013-09-05T05:24:27.847 に答える
0

configs/application.iniファイルを使用して構成およびブートストラップしています。

したがって、次の行をファイルに追加すると機能します。

resources.router.routes.email.route = /email
resources.router.routes.email.defaults.module = default
resources.router.routes.email.defaults.controller = email
resources.router.routes.email.defaults.action = index

したがって、ルートは明らかに明示的に宣言する必要があり、によって処理されませんzf tool

于 2013-09-05T08:13:10.050 に答える